Merge pull request #4361 from elemoine/gpx

Make GPX format not fail on unsupported geometries
This commit is contained in:
Éric Lemoine
2015-11-02 17:54:47 +01:00
2 changed files with 546 additions and 530 deletions
+4 -2
View File
@@ -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 nodeName = ol.format.GPX.GEOMETRY_TYPE_TO_NODENAME_[geometry.getType()];
if (nodeName) {
var parentNode = objectStack[objectStack.length - 1].node; var parentNode = objectStack[objectStack.length - 1].node;
goog.asserts.assert(ol.xml.isNode(parentNode), goog.asserts.assert(ol.xml.isNode(parentNode),
'parentNode should be an XML node'); 'parentNode should be an XML node');
return ol.xml.createElementNS(parentNode.namespaceURI, return ol.xml.createElementNS(parentNode.namespaceURI, nodeName);
ol.format.GPX.GEOMETRY_TYPE_TO_NODENAME_[geometry.getType()]); }
} }
}; };
+16 -2
View File
@@ -19,8 +19,6 @@ describe('ol.format.GPX', function() {
}); });
}); });
describe('readFeatures', function() {
describe('rte', function() { describe('rte', function() {
it('can read an empty rte', function() { it('can read an empty rte', function() {
@@ -559,6 +557,21 @@ 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);
});
}); });
}); });
@@ -570,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');