Write the correct SRS code in EsriJSON
This commit is contained in:
@@ -207,16 +207,14 @@ class EsriJSON extends JSONFeature {
|
||||
const geometry = feature.getGeometry();
|
||||
if (geometry) {
|
||||
object['geometry'] = writeGeometry(geometry, opt_options);
|
||||
if (opt_options && opt_options.featureProjection) {
|
||||
const projection =
|
||||
opt_options &&
|
||||
(opt_options.dataProjection || opt_options.featureProjection);
|
||||
if (projection) {
|
||||
object['geometry'][
|
||||
'spatialReference'
|
||||
] = /** @type {EsriJSONSpatialReferenceWkid} */ ({
|
||||
wkid: Number(
|
||||
getProjection(opt_options.featureProjection)
|
||||
.getCode()
|
||||
.split(':')
|
||||
.pop()
|
||||
),
|
||||
wkid: Number(getProjection(projection).getCode().split(':').pop()),
|
||||
});
|
||||
}
|
||||
delete properties[feature.getGeometryName()];
|
||||
|
||||
@@ -1763,15 +1763,38 @@ describe('ol.format.EsriJSON', function () {
|
||||
expect(esrijson.attributes).to.eql({});
|
||||
});
|
||||
|
||||
it('adds the projection inside the geometry correctly', function () {
|
||||
it('adds the projection inside the geometry correctly when featureProjection is set', function () {
|
||||
const str = JSON.stringify(data);
|
||||
const array = format.readFeatures(str);
|
||||
const esrijson = format.writeFeaturesObject(array, {
|
||||
featureProjection: 'EPSG:4326',
|
||||
featureProjection: 'EPSG:3857',
|
||||
});
|
||||
esrijson.features.forEach(function (feature) {
|
||||
esrijson.features.forEach(function (feature, i) {
|
||||
const spatialReference = feature.geometry.spatialReference;
|
||||
expect(Number(spatialReference.wkid)).to.equal(3857);
|
||||
expect(feature.geometry.paths[0]).to.eql(
|
||||
array[i].getGeometry().getCoordinates()
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it('adds the projection inside the geometry correctly when dataProjection is set', function () {
|
||||
const str = JSON.stringify(data);
|
||||
const array = format.readFeatures(str);
|
||||
const esrijson = format.writeFeaturesObject(array, {
|
||||
dataProjection: 'EPSG:4326',
|
||||
featureProjection: 'EPSG:3857',
|
||||
});
|
||||
esrijson.features.forEach(function (feature, i) {
|
||||
const spatialReference = feature.geometry.spatialReference;
|
||||
expect(Number(spatialReference.wkid)).to.equal(4326);
|
||||
expect(feature.geometry.paths[0]).to.eql(
|
||||
array[i]
|
||||
.getGeometry()
|
||||
.clone()
|
||||
.transform('EPSG:3857', 'EPSG:4326')
|
||||
.getCoordinates()
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user