diff --git a/src/ol/format/wmtscapabilitiesformat.js b/src/ol/format/wmtscapabilitiesformat.js index 91047cfef4..6c6bb4974c 100644 --- a/src/ol/format/wmtscapabilitiesformat.js +++ b/src/ol/format/wmtscapabilitiesformat.js @@ -156,6 +156,18 @@ ol.format.WMTSCapabilities.readTileMatrixSetLink_ = function(node, }; +/** + * @private + * @param {Node} node Node. + * @param {Array.<*>} objectStack Object stack. + * @return {Object|undefined} Dimension object. + */ +ol.format.WMTSCapabilities.readDimensions_ = function(node, objectStack) { + return ol.xml.pushParseAndPop({}, + ol.format.WMTSCapabilities.DIMENSION_PARSERS_, node, objectStack); +}; + + /** * @private * @param {Node} node Node. @@ -303,6 +315,8 @@ ol.format.WMTSCapabilities.LAYER_PARSERS_ = ol.xml.makeStructureNS( ol.format.XSD.readString), 'TileMatrixSetLink': ol.xml.makeObjectPropertyPusher( ol.format.WMTSCapabilities.readTileMatrixSetLink_), + 'Dimension': ol.xml.makeObjectPropertyPusher( + ol.format.WMTSCapabilities.readDimensions_), 'ResourceURL': ol.xml.makeObjectPropertyPusher( ol.format.WMTSCapabilities.readResourceUrl_) }, ol.xml.makeStructureNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, { @@ -346,6 +360,23 @@ ol.format.WMTSCapabilities.TMS_LINKS_PARSERS_ = ol.xml.makeStructureNS( }); +/** + * @const + * @type {Object.>} + * @private + */ +ol.format.WMTSCapabilities.DIMENSION_PARSERS_ = ol.xml.makeStructureNS( + ol.format.WMTSCapabilities.NAMESPACE_URIS_, { + 'Default': ol.xml.makeObjectPropertySetter( + ol.format.XSD.readString), + 'Value': ol.xml.makeObjectPropertyPusher( + ol.format.XSD.readString) + }, ol.xml.makeStructureNS(ol.format.WMTSCapabilities.OWS_NAMESPACE_URIS_, { + 'Identifier': ol.xml.makeObjectPropertySetter( + ol.format.XSD.readString) + })); + + /** * @const * @type {Object.>} diff --git a/src/ol/source/wmtssource.js b/src/ol/source/wmtssource.js index 982b335a1e..c80e745752 100644 --- a/src/ol/source/wmtssource.js +++ b/src/ol/source/wmtssource.js @@ -401,12 +401,12 @@ ol.source.WMTS.optionsFromCapabilities = function(wmtsCap, config) { if ('Dimension' in l) { l['Dimension'].forEach(function(elt, index, array) { var key = elt['Identifier']; - var value = elt['default']; + var value = elt['Default']; if (value !== undefined) { - goog.asserts.assert(ol.array.includes(elt['values'], value), + goog.asserts.assert(ol.array.includes(elt['Value'], value), 'default value contained in values'); } else { - value = elt['values'][0]; + value = elt['Value'][0]; } goog.asserts.assert(value !== undefined, 'value could be found'); dimensions[key] = value; diff --git a/test/spec/ol/format/wmts/ogcsample.xml b/test/spec/ol/format/wmts/ogcsample.xml index f8e36b01d9..fbf7b282b8 100644 --- a/test/spec/ol/format/wmts/ogcsample.xml +++ b/test/spec/ol/format/wmts/ogcsample.xml @@ -94,6 +94,12 @@ access interface to some TileMatrixSets + + Time + 20110805 + 20110805 + 20081024 + diff --git a/test/spec/ol/format/wmtscapabilitiesformat.test.js b/test/spec/ol/format/wmtscapabilitiesformat.test.js index e87d30d01b..c46c1050af 100644 --- a/test/spec/ol/format/wmtscapabilitiesformat.test.js +++ b/test/spec/ol/format/wmtscapabilitiesformat.test.js @@ -29,6 +29,15 @@ describe('ol.format.WMTSCapabilities', function() { expect(layer.Identifier).to.be.eql('BlueMarbleNextGeneration'); expect(layer.Title).to.be.eql('Blue Marble Next Generation'); + expect(layer.Dimension).to.be.an('array'); + expect(layer.Dimension).to.have.length(1); + expect(layer.Dimension[0]).to.be.an('object'); + expect(layer.Dimension[0].Identifier).to.be.eql('Time'); + expect(layer.Dimension[0].Default).to.be.eql('20110805'); + expect(layer.Dimension[0].Value).to.be.an('array'); + expect(layer.Dimension[0].Value).to.have.length(2); + expect(layer.Dimension[0].Value[0]).to.be.eql('20110805'); + expect(layer.Format).to.be.an('array'); expect(layer.Format).to.have.length(2); expect(layer.Format[0]).to.be.eql('image/jpeg'); diff --git a/test/spec/ol/source/wmtssource.test.js b/test/spec/ol/source/wmtssource.test.js index 5f89e4cb66..d3acf0b118 100644 --- a/test/spec/ol/source/wmtssource.test.js +++ b/test/spec/ol/source/wmtssource.test.js @@ -42,7 +42,7 @@ describe('ol.source.WMTS', function() { expect(options.style).to.be.eql('DarkBlue'); - expect(options.dimensions).to.eql({}); + expect(options.dimensions).to.eql({Time: '20110805'}); }); @@ -73,7 +73,7 @@ describe('ol.source.WMTS', function() { expect(options.style).to.be.eql('DarkBlue'); - expect(options.dimensions).to.eql({}); + expect(options.dimensions).to.eql({Time: '20110805'}); });