Merge pull request #5080 from probins/geomcoll

Fix geojson write GeometryCollection
This commit is contained in:
Andreas Hocevar
2016-03-21 13:28:46 +01:00
2 changed files with 25 additions and 1 deletions

View File

@@ -211,7 +211,9 @@ ol.format.GeoJSON.writeGeometryCollectionGeometry_ = function(
goog.asserts.assertInstanceof(geometry, ol.geom.GeometryCollection,
'geometry should be an ol.geom.GeometryCollection');
var geometries = geometry.getGeometriesArray().map(function(geometry) {
return ol.format.GeoJSON.writeGeometry_(geometry, opt_options);
var options = ol.object.assign({}, opt_options);
delete options.featureProjection;
return ol.format.GeoJSON.writeGeometry_(geometry, options);
});
return /** @type {GeoJSONGeometryCollection} */ ({
type: 'GeometryCollection',

View File

@@ -725,6 +725,28 @@ describe('ol.format.GeoJSON', function() {
.to.be.lessThan(0.0000001);
});
it('transforms and encodes geometry collection', function() {
var collection = new ol.geom.GeometryCollection([
new ol.geom.Point([2, 3]),
new ol.geom.LineString([[3, 2], [2, 1]])
]);
var geojson = format.writeGeometry(collection, {
featureProjection: 'EPSG:3857'
});
var got = format.readGeometry(geojson, {
featureProjection: 'EPSG:3857'
});
var gotGeometries = got.getGeometries();
var geometries = collection.getGeometries();
expect(geometries[0].getCoordinates()[0]).to.roughlyEqual(
gotGeometries[0].getCoordinates()[0], 1e-8);
expect(geometries[0].getCoordinates()[1]).to.roughlyEqual(
gotGeometries[0].getCoordinates()[1], 1e-8);
expect(geometries[1].getCoordinates()[0][0]).to.roughlyEqual(
gotGeometries[1].getCoordinates()[0][0], 1e-8);
expect(geometries[1].getCoordinates()[0][1]).to.roughlyEqual(
gotGeometries[1].getCoordinates()[0][1], 1e-8);
});
});
});