diff --git a/src/ol/format/KML.js b/src/ol/format/KML.js index 7f6abf5475..7679f5583f 100644 --- a/src/ol/format/KML.js +++ b/src/ol/format/KML.js @@ -682,9 +682,9 @@ class KML extends XMLFeature { const localName = n.localName; if (includes(NAMESPACE_URIS, n.namespaceURI) && (localName == 'Document' || - localName == 'Folder' || - localName == 'Placemark' || - localName == 'kml')) { + localName == 'Folder' || + localName == 'Placemark' || + localName == 'kml')) { const name = this.readNameFromNode(n); if (name) { return name; @@ -748,8 +748,8 @@ class KML extends XMLFeature { const localName = n.localName; if (includes(NAMESPACE_URIS, n.namespaceURI) && (localName == 'Document' || - localName == 'Folder' || - localName == 'kml')) { + localName == 'Folder' || + localName == 'kml')) { extend(networkLinks, this.readNetworkLinksFromNode(n)); } } @@ -811,8 +811,8 @@ class KML extends XMLFeature { const localName = n.localName; if (includes(NAMESPACE_URIS, n.namespaceURI) && (localName == 'Document' || - localName == 'Folder' || - localName == 'kml')) { + localName == 'Folder' || + localName == 'kml')) { extend(regions, this.readRegionFromNode(n)); } } @@ -1797,7 +1797,12 @@ function dataParser(node, objectStack) { const name = node.getAttribute('name'); parseNode(DATA_PARSERS, node, objectStack); const featureObject = /** @type {Object} */ (objectStack[objectStack.length - 1]); - if (name !== null) { + if (name && featureObject.displayName) { + featureObject[name] = { + value: featureObject.value, + displayName: featureObject.displayName + }; + } else if (name !== null) { featureObject[name] = featureObject.value; } else if (featureObject.displayName !== null) { featureObject[featureObject.displayName] = featureObject.value; diff --git a/test/spec/ol/format/kml.test.js b/test/spec/ol/format/kml.test.js index b13c3051f7..b2991481b7 100644 --- a/test/spec/ol/format/kml.test.js +++ b/test/spec/ol/format/kml.test.js @@ -1670,25 +1670,6 @@ describe('ol.format.KML', function() { expect(f.get('bar')).to.be(undefined); }); - it('can read ExtendedData with displayName instead of name', function() { - const text = - '' + - ' ' + - ' ' + - ' ' + - ' foo' + - ' bar' + - ' ' + - ' ' + - ' ' + - ''; - const fs = format.readFeatures(text); - expect(fs).to.have.length(1); - const f = fs[0]; - expect(f).to.be.an(Feature); - expect(f.get('foo')).to.be('bar'); - }); - it('can read SchemaData', function() { const text = '' + @@ -1709,7 +1690,7 @@ describe('ol.format.KML', function() { expect(f.get('population')).to.be('60000000'); }); - it('can read ExtendedData with displayName when name undefined', function() { + it('can read ExtendedData with displayName', function() { const text = '' + ' ' + @@ -1730,7 +1711,10 @@ describe('ol.format.KML', function() { const f = fs[0]; expect(f).to.be.an(Feature); expect(f.get('capital')).to.be('London'); - expect(f.get('country')).to.be('United-Kingdom'); + expect(f.get('country')).to.eql({ + value: 'United-Kingdom', + displayName: 'Country' + }); }); });