Changes to parsing of KML displayName
To avoid loss of information the behaviour of parsing the displayName (if a name attribute is also given) is changed.
This commit is contained in:
@@ -1797,7 +1797,12 @@ function dataParser(node, objectStack) {
|
|||||||
const name = node.getAttribute('name');
|
const name = node.getAttribute('name');
|
||||||
parseNode(DATA_PARSERS, node, objectStack);
|
parseNode(DATA_PARSERS, node, objectStack);
|
||||||
const featureObject = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
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;
|
featureObject[name] = featureObject.value;
|
||||||
} else if (featureObject.displayName !== null) {
|
} else if (featureObject.displayName !== null) {
|
||||||
featureObject[featureObject.displayName] = featureObject.value;
|
featureObject[featureObject.displayName] = featureObject.value;
|
||||||
|
|||||||
@@ -1670,25 +1670,6 @@ describe('ol.format.KML', function() {
|
|||||||
expect(f.get('bar')).to.be(undefined);
|
expect(f.get('bar')).to.be(undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can read ExtendedData with displayName instead of name', function() {
|
|
||||||
const text =
|
|
||||||
'<kml xmlns="http://earth.google.com/kml/2.2">' +
|
|
||||||
' <Placemark xmlns="http://earth.google.com/kml/2.2">' +
|
|
||||||
' <ExtendedData>' +
|
|
||||||
' <Data>' +
|
|
||||||
' <displayName>foo</displayName>' +
|
|
||||||
' <value>bar</value>' +
|
|
||||||
' </Data>' +
|
|
||||||
' </ExtendedData>' +
|
|
||||||
' </Placemark>' +
|
|
||||||
'</kml>';
|
|
||||||
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() {
|
it('can read SchemaData', function() {
|
||||||
const text =
|
const text =
|
||||||
'<kml xmlns="http://earth.google.com/kml/2.2">' +
|
'<kml xmlns="http://earth.google.com/kml/2.2">' +
|
||||||
@@ -1709,7 +1690,7 @@ describe('ol.format.KML', function() {
|
|||||||
expect(f.get('population')).to.be('60000000');
|
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 =
|
const text =
|
||||||
'<kml xmlns="http://earth.google.com/kml/2.2">' +
|
'<kml xmlns="http://earth.google.com/kml/2.2">' +
|
||||||
' <Placemark xmlns="http://earth.google.com/kml/2.2">' +
|
' <Placemark xmlns="http://earth.google.com/kml/2.2">' +
|
||||||
@@ -1730,7 +1711,10 @@ describe('ol.format.KML', function() {
|
|||||||
const f = fs[0];
|
const f = fs[0];
|
||||||
expect(f).to.be.an(Feature);
|
expect(f).to.be.an(Feature);
|
||||||
expect(f.get('capital')).to.be('London');
|
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'
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user