在ol3中,拥有一个名为geometry
的属性之一的GeoJSON失败:
var geojsonObject = {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"prop0": "value0",
"geometry": "This is a point"
}
}]
};
features = new ol.format.GeoJSON().readFeatures(geojsonObject);
console.log(features[0].getGeometry());
console.log(features[0].get('prop0'));
这合法吗?应该支持吗?
答案 0 :(得分:1)
是的,拥有名为geometry的要素属性是有效的GeoJSON。
明确指出了GeoJSON规范属性成员的值是一个对象(任何JSON对象或JSON空值)
OpenLayers 3将几何图形存储为要素上的普通属性,默认名称为geometry
。在阅读问题中的功能时,geometry
GeoJSON功能成员首先写入geometry
属性,但随后被geometry
GeoJSON属性成员覆盖。
要避免此冲突,必须使用不同的属性名称存储几何。您可以使用ol.format.GeoJSON
的geometryName
选项来控制它:
var geoJSONFormat = new ol.format.GeoJSON({
geometryName: 'actualGeometry'
});
geoJSONFormat.readFeatures(geojsonObject);