From 011285aefeb6c7520db279ec2cffd587f60d4abb Mon Sep 17 00:00:00 2001 From: Alexandre Silva Date: Mon, 16 Oct 2017 14:51:55 +0100 Subject: [PATCH 1/3] Added option to the ol.format.GeoJSON to allow the reading of the geometry_name from the geojson. --- externs/geojson.js | 5 +++++ externs/olx.js | 12 ++++++++++++ src/ol/format/geojson.js | 9 +++++++++ 3 files changed, 26 insertions(+) diff --git a/externs/geojson.js b/externs/geojson.js index 4dbe44a8d3..108fbe494c 100644 --- a/externs/geojson.js +++ b/externs/geojson.js @@ -140,6 +140,11 @@ GeoJSONFeature.prototype.id; GeoJSONFeature.prototype.properties; +/** + * @type {string|undefined} + */ +GeoJSONFeature.prototype.geometry_name; + /** * @constructor diff --git a/externs/olx.js b/externs/olx.js index 22e1921606..318af1996f 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -1994,6 +1994,7 @@ olx.format.WriteOptions.prototype.decimals; /** * @typedef {{defaultDataProjection: ol.ProjectionLike, * geometryName: (string|undefined), + * readGeometryNameFromGeoJSON: (boolean|undefined), * featureProjection: ol.ProjectionLike}} */ olx.format.GeoJSONOptions; @@ -2024,6 +2025,17 @@ olx.format.GeoJSONOptions.prototype.featureProjection; olx.format.GeoJSONOptions.prototype.geometryName; +/** + * Certain GeoJSON providers include the geometry_name field in the feature + * geoJSON. If set to `true` the geoJSON reader will look for that field to + * set the geometry name. If both this field is set to `true` and a + * `geometryName` is provided the `geometryName` will take precedence. + * @type {boolean|undefined} + * @api + */ +olx.format.GeoJSONOptions.prototype.readGeometryNameFromGeoJSON; + + /** * @typedef {{geometryName: (string|undefined)}} */ diff --git a/src/ol/format/geojson.js b/src/ol/format/geojson.js index f3f18e386c..ad053e1de8 100644 --- a/src/ol/format/geojson.js +++ b/src/ol/format/geojson.js @@ -53,6 +53,13 @@ ol.format.GeoJSON = function(opt_options) { */ this.geometryName_ = options.geometryName; + /** + * Look for the geometry name in the feature GeoJSON + * @type {boolean|undefined} + * @private + */ + this.readGeometryNameFromGeoJSON_ = options.readGeometryNameFromGeoJSON; + }; ol.inherits(ol.format.GeoJSON, ol.format.JSONFeature); @@ -377,6 +384,8 @@ ol.format.GeoJSON.prototype.readFeatureFromObject = function( var feature = new ol.Feature(); if (this.geometryName_) { feature.setGeometryName(this.geometryName_); + } else if (this.readGeometryNameFromGeoJSON_ && geoJSONFeature.geometry_name !== undefined) { + feature.setGeometryName(geoJSONFeature.geometry_name); } feature.setGeometry(geometry); if (geoJSONFeature.id !== undefined) { From 260327341c78abe3fdca00a27fb3379b3795f5e0 Mon Sep 17 00:00:00 2001 From: Alexandre Silva Date: Mon, 6 Nov 2017 11:10:49 +0000 Subject: [PATCH 2/3] Documented the default value. --- externs/olx.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/externs/olx.js b/externs/olx.js index 318af1996f..140e53724b 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -2029,7 +2029,8 @@ olx.format.GeoJSONOptions.prototype.geometryName; * Certain GeoJSON providers include the geometry_name field in the feature * geoJSON. If set to `true` the geoJSON reader will look for that field to * set the geometry name. If both this field is set to `true` and a - * `geometryName` is provided the `geometryName` will take precedence. + * `geometryName` is provided, the `geometryName` will take precedence. + * Default is `false`. * @type {boolean|undefined} * @api */ From cd5e5039e9ae173b6a05a83e7fe3a24606168fe8 Mon Sep 17 00:00:00 2001 From: Alexandre Silva Date: Tue, 7 Nov 2017 10:24:10 +0000 Subject: [PATCH 3/3] Changed option name to extractGeometryName --- externs/olx.js | 4 ++-- src/ol/format/geojson.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 140e53724b..aaff332f68 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -1994,7 +1994,7 @@ olx.format.WriteOptions.prototype.decimals; /** * @typedef {{defaultDataProjection: ol.ProjectionLike, * geometryName: (string|undefined), - * readGeometryNameFromGeoJSON: (boolean|undefined), + * extractGeometryName: (boolean|undefined), * featureProjection: ol.ProjectionLike}} */ olx.format.GeoJSONOptions; @@ -2034,7 +2034,7 @@ olx.format.GeoJSONOptions.prototype.geometryName; * @type {boolean|undefined} * @api */ -olx.format.GeoJSONOptions.prototype.readGeometryNameFromGeoJSON; +olx.format.GeoJSONOptions.prototype.extractGeometryName; /** diff --git a/src/ol/format/geojson.js b/src/ol/format/geojson.js index ad053e1de8..2328f54255 100644 --- a/src/ol/format/geojson.js +++ b/src/ol/format/geojson.js @@ -58,7 +58,7 @@ ol.format.GeoJSON = function(opt_options) { * @type {boolean|undefined} * @private */ - this.readGeometryNameFromGeoJSON_ = options.readGeometryNameFromGeoJSON; + this.extractGeometryName_ = options.extractGeometryName; }; ol.inherits(ol.format.GeoJSON, ol.format.JSONFeature); @@ -384,7 +384,7 @@ ol.format.GeoJSON.prototype.readFeatureFromObject = function( var feature = new ol.Feature(); if (this.geometryName_) { feature.setGeometryName(this.geometryName_); - } else if (this.readGeometryNameFromGeoJSON_ && geoJSONFeature.geometry_name !== undefined) { + } else if (this.extractGeometryName_ && geoJSONFeature.geometry_name !== undefined) { feature.setGeometryName(geoJSONFeature.geometry_name); } feature.setGeometry(geometry);