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'
+ });
});
});