From a662f82a1b5a57eda2e8dff89d7e70d0f304280c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Sat, 3 Mar 2012 17:57:22 +0100 Subject: [PATCH] improve createLayer from WMTS Capabilities --- lib/OpenLayers/Format/WMTSCapabilities.js | 147 +++++++++++++++------- lib/OpenLayers/Layer/WMTS.js | 1 + 2 files changed, 106 insertions(+), 42 deletions(-) diff --git a/lib/OpenLayers/Format/WMTSCapabilities.js b/lib/OpenLayers/Format/WMTSCapabilities.js index 1d2b82c4c3..3ad1f72ba8 100644 --- a/lib/OpenLayers/Format/WMTSCapabilities.js +++ b/lib/OpenLayers/Format/WMTSCapabilities.js @@ -6,27 +6,27 @@ /** * @requires OpenLayers/Format/XML/VersionedOGC.js */ - + /** * Class: OpenLayers.Format.WMTSCapabilities * Read WMTS Capabilities. - * + * * Inherits from: * - */ OpenLayers.Format.WMTSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, { - + /** * APIProperty: defaultVersion * {String} Version number to assume if none found. Default is "1.0.0". */ defaultVersion: "1.0.0", - + /** * APIProperty: yx * {Object} Members in the yx object are used to determine if a CRS URN * corresponds to a CRS with y,x axis order. Member names are CRS URNs - * and values are boolean. By default, the following CRS URN are + * and values are boolean. By default, the following CRS URN are * assumed to correspond to a CRS with y,x axis order: * * * urn:ogc:def:crs:EPSG::4326 @@ -48,8 +48,8 @@ OpenLayers.Format.WMTSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.Vers * APIMethod: read * Read capabilities data from a string, and return information about * the service (offering and observedProperty mostly). - * - * Parameters: + * + * Parameters: * data - {String} or {DOMElement} data to read/parse. * * Returns: @@ -61,36 +61,34 @@ OpenLayers.Format.WMTSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.Vers * Create a WMTS layer given a capabilities object. * * Parameters: - * capabilities - {Object} The object returned from a call to this + * capabilities - {Object} The object returned from a call to this * format. * config - {Object} Configuration properties for the layer. Defaults for * the layer will apply if not provided. * * Required config properties: * layer - {String} The layer identifier. - * matrixSet - {String} The matrix set identifier. + * + * Optional config properties: + * matrixSet - {String} The matrix set identifier, required if there is + * more than one matrix set in the layer capabilities. + * style - {String} The name of the style + * param - {Object} The dimensions values eg: {"Year": "2012"} * * Returns: * {} A properly configured WMTS layer. Throws an * error if an incomplete config is provided. Returns undefined if no * layer could be created with the provided config. - */ + */ createLayer: function(capabilities, config) { var layer; // confirm required properties are supplied in config - var required = { - layer: true, - matrixSet: true - }; - for (var prop in required) { - if (!(prop in config)) { - throw new Error("Missing property '" + prop + "' in layer configuration."); - } + if (!('layer' in config)) { + throw new Error("Missing property 'layer' in configuration."); } var contents = capabilities.contents; - var matrixSet = contents.tileMatrixSets[config.matrixSet]; // find the layer definition with the given identifier var layers = contents.layers; @@ -101,32 +99,97 @@ OpenLayers.Format.WMTSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.Vers break; } } - - if (layerDef && matrixSet) { - // get the default style for the layer - var style; - for (var i=0, ii=layerDef.styles.length; i} The top left corner of the * matrix. Must be provided if different than the layer . * tileWidth - {Number} The tile width for the matrix. Must be provided