Merge pull request #2097 from bartvde/geojson-geometryname

Ability to specify geometryName on ol.format.GeoJSON (r=@tschaub)
This commit is contained in:
Bart van den Eijnden
2014-05-21 17:26:02 +02:00
3 changed files with 29 additions and 2 deletions

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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() {