Merge pull request #2097 from bartvde/geojson-geometryname
Ability to specify geometryName on ol.format.GeoJSON (r=@tschaub)
This commit is contained in:
@@ -1104,7 +1104,8 @@ olx.control.ZoomToExtentOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {{defaultProjection: ol.proj.ProjectionLike}}
|
||||
* @typedef {{defaultProjection: ol.proj.ProjectionLike,
|
||||
* geometryName: (string|undefined)}}
|
||||
* @todo api
|
||||
*/
|
||||
olx.format.GeoJSONOptions;
|
||||
@@ -1117,6 +1118,13 @@ olx.format.GeoJSONOptions;
|
||||
olx.format.GeoJSONOptions.prototype.defaultProjection;
|
||||
|
||||
|
||||
/**
|
||||
* Geometry name to use when creating features.
|
||||
* @type {string|undefined}
|
||||
*/
|
||||
olx.format.GeoJSONOptions.prototype.geometryName;
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {{defaultProjection: ol.proj.ProjectionLike}}
|
||||
* @todo api
|
||||
|
||||
@@ -41,6 +41,14 @@ ol.format.GeoJSON = function(opt_options) {
|
||||
this.defaultProjection_ = ol.proj.get(options.defaultProjection ?
|
||||
options.defaultProjection : 'EPSG:4326');
|
||||
|
||||
|
||||
/**
|
||||
* Name of the geometry attribute for features.
|
||||
* @type {string|undefined}
|
||||
* @private
|
||||
*/
|
||||
this.geometryName_ = options.geometryName;
|
||||
|
||||
};
|
||||
goog.inherits(ol.format.GeoJSON, ol.format.JSONFeature);
|
||||
|
||||
@@ -346,7 +354,11 @@ ol.format.GeoJSON.prototype.readFeatureFromObject = function(object) {
|
||||
var geoJSONFeature = /** @type {GeoJSONFeature} */ (object);
|
||||
goog.asserts.assert(geoJSONFeature.type == 'Feature');
|
||||
var geometry = ol.format.GeoJSON.readGeometry_(geoJSONFeature.geometry);
|
||||
var feature = new ol.Feature(geometry);
|
||||
var feature = new ol.Feature();
|
||||
if (goog.isDef(this.geometryName_)) {
|
||||
feature.setGeometryName(this.geometryName_);
|
||||
}
|
||||
feature.setGeometry(geometry);
|
||||
if (goog.isDef(geoJSONFeature.id)) {
|
||||
feature.setId(geoJSONFeature.id);
|
||||
}
|
||||
|
||||
@@ -174,6 +174,13 @@ describe('ol.format.GeoJSON', function() {
|
||||
expect(features[2].getGeometry()).to.be.an(ol.geom.Polygon);
|
||||
});
|
||||
|
||||
it('can create a feature with a specific geometryName', function() {
|
||||
var feature = new ol.format.GeoJSON({geometryName: 'the_geom'}).
|
||||
readFeature(pointGeoJSON);
|
||||
expect(feature.getGeometryName()).to.be('the_geom');
|
||||
expect(feature.getGeometry()).to.be.an(ol.geom.Point);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('#readFeatures', function() {
|
||||
|
||||
Reference in New Issue
Block a user