Make GPX format no fail on unsupported geometries
This commit is contained in:
@@ -839,11 +839,13 @@ ol.format.GPX.GPX_NODE_FACTORY_ = function(value, objectStack, opt_nodeName) {
|
|||||||
'value should be an ol.Feature');
|
'value should be an ol.Feature');
|
||||||
var geometry = value.getGeometry();
|
var geometry = value.getGeometry();
|
||||||
if (geometry) {
|
if (geometry) {
|
||||||
var parentNode = objectStack[objectStack.length - 1].node;
|
var nodeName = ol.format.GPX.GEOMETRY_TYPE_TO_NODENAME_[geometry.getType()];
|
||||||
goog.asserts.assert(ol.xml.isNode(parentNode),
|
if (nodeName) {
|
||||||
'parentNode should be an XML node');
|
var parentNode = objectStack[objectStack.length - 1].node;
|
||||||
return ol.xml.createElementNS(parentNode.namespaceURI,
|
goog.asserts.assert(ol.xml.isNode(parentNode),
|
||||||
ol.format.GPX.GEOMETRY_TYPE_TO_NODENAME_[geometry.getType()]);
|
'parentNode should be an XML node');
|
||||||
|
return ol.xml.createElementNS(parentNode.namespaceURI, nodeName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -557,6 +557,23 @@ describe('ol.format.GPX', function() {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('write unsupported geometries', function() {
|
||||||
|
beforeEach(function() {
|
||||||
|
format = new ol.format.GPX();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not fail', function() {
|
||||||
|
var polygon = new ol.geom.Polygon(
|
||||||
|
[[[0, 0], [2, 2], [4, 0], [0, 0]]]);
|
||||||
|
var feature = new ol.Feature(polygon);
|
||||||
|
var features = [feature];
|
||||||
|
var gpx = format.writeFeatures(features);
|
||||||
|
var expected =
|
||||||
|
'<gpx xmlns="http://www.topografix.com/GPX/1/1"/>';
|
||||||
|
expect(gpx).to.be(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
@@ -566,5 +583,6 @@ goog.require('ol.geom.GeometryLayout');
|
|||||||
goog.require('ol.geom.LineString');
|
goog.require('ol.geom.LineString');
|
||||||
goog.require('ol.geom.MultiLineString');
|
goog.require('ol.geom.MultiLineString');
|
||||||
goog.require('ol.geom.Point');
|
goog.require('ol.geom.Point');
|
||||||
|
goog.require('ol.geom.Polygon');
|
||||||
goog.require('ol.proj');
|
goog.require('ol.proj');
|
||||||
goog.require('ol.xml');
|
goog.require('ol.xml');
|
||||||
|
|||||||
Reference in New Issue
Block a user