Merge pull request #9500 from edellucien/kml_extended_data
KML string validation with extendedData
This commit is contained in:
@@ -2684,13 +2684,6 @@ function writePlacemark(node, feature, objectStack) {
|
||||
return !filter[v];
|
||||
});
|
||||
|
||||
if (keys.length > 0) {
|
||||
const sequence = makeSequence(properties, keys);
|
||||
const namesAndValues = {names: keys, values: sequence};
|
||||
pushSerializeAndPop(context, PLACEMARK_SERIALIZERS,
|
||||
EXTENDEDDATA_NODE_FACTORY, [namesAndValues], objectStack);
|
||||
}
|
||||
|
||||
const styleFunction = feature.getStyleFunction();
|
||||
if (styleFunction) {
|
||||
// FIXME the styles returned by the style function are supposed to be
|
||||
@@ -2713,6 +2706,13 @@ function writePlacemark(node, feature, objectStack) {
|
||||
pushSerializeAndPop(context, PLACEMARK_SERIALIZERS,
|
||||
OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);
|
||||
|
||||
if (keys.length > 0) {
|
||||
const sequence = makeSequence(properties, keys);
|
||||
const namesAndValues = {names: keys, values: sequence};
|
||||
pushSerializeAndPop(context, PLACEMARK_SERIALIZERS,
|
||||
EXTENDEDDATA_NODE_FACTORY, [namesAndValues], objectStack);
|
||||
}
|
||||
|
||||
// serialize geometry
|
||||
const options = /** @type {import("./Feature.js").WriteOptions} */ (objectStack[0]);
|
||||
let geometry = feature.getGeometry();
|
||||
|
||||
@@ -1597,6 +1597,39 @@ describe('ol.format.KML', function() {
|
||||
expect(node).to.xmleql(parse(text));
|
||||
});
|
||||
|
||||
it('can write ExtendedData after Style tag', function() {
|
||||
const style = new Style({
|
||||
stroke: new Stroke({
|
||||
color: '#112233',
|
||||
width: 2
|
||||
})
|
||||
});
|
||||
const feature = new Feature();
|
||||
feature.set('foo', null);
|
||||
feature.setStyle([style]);
|
||||
const features = [feature];
|
||||
const node = format.writeFeaturesNode(features);
|
||||
const text =
|
||||
'<kml xmlns="http://www.opengis.net/kml/2.2"' +
|
||||
' xmlns:gx="http://www.google.com/kml/ext/2.2"' +
|
||||
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
|
||||
' xsi:schemaLocation="http://www.opengis.net/kml/2.2' +
|
||||
' https://developers.google.com/kml/schema/kml22gx.xsd">' +
|
||||
' <Placemark>' +
|
||||
' <Style>' +
|
||||
' <LineStyle>' +
|
||||
' <color>ff332211</color>' +
|
||||
' <width>2</width>' +
|
||||
' </LineStyle>' +
|
||||
' </Style>' +
|
||||
' <ExtendedData>' +
|
||||
' <Data name="foo"/>' +
|
||||
' </ExtendedData>' +
|
||||
' </Placemark>' +
|
||||
'</kml>';
|
||||
expect(node).to.xmleql(parse(text));
|
||||
});
|
||||
|
||||
it('can read ExtendedData', function() {
|
||||
const text =
|
||||
'<kml xmlns="http://earth.google.com/kml/2.2">' +
|
||||
|
||||
Reference in New Issue
Block a user