diff --git a/src/ol/format/KML.js b/src/ol/format/KML.js
index 7679f5583f..6dc2b6f784 100644
--- a/src/ol/format/KML.js
+++ b/src/ol/format/KML.js
@@ -1800,7 +1800,10 @@ function dataParser(node, objectStack) {
if (name && featureObject.displayName) {
featureObject[name] = {
value: featureObject.value,
- displayName: featureObject.displayName
+ displayName: featureObject.displayName,
+ toString: function() {
+ return featureObject.value;
+ }
};
} else if (name !== null) {
featureObject[name] = featureObject.value;
diff --git a/test/spec/ol/format/kml.test.js b/test/spec/ol/format/kml.test.js
index b2991481b7..16de7be357 100644
--- a/test/spec/ol/format/kml.test.js
+++ b/test/spec/ol/format/kml.test.js
@@ -1670,6 +1670,25 @@ 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 =
'' +
@@ -1711,10 +1730,8 @@ 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.eql({
- value: 'United-Kingdom',
- displayName: 'Country'
- });
+ expect(f.get('country').value).to.be('United-Kingdom');
+ expect(f.get('country').displayName).to.be('Country');
});
});