具有ol3中几何属性的GeoJSON

时间:2015-09-23 17:44:24

标签: openlayers-3

在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'));

这合法吗?应该支持吗?

1 个答案:

答案 0 :(得分:1)

是的,拥有名为geometry的要素属性是有效的GeoJSON。

明确指出了GeoJSON规范
  

属性成员的值是一个对象(任何JSON对象或JSON空值)

OpenLayers 3将几何图形存储为要素上的普通属性,默认名称为geometry。在阅读问题中的功能时,geometry GeoJSON功能成员首先写入geometry属性,但随后被geometry GeoJSON属性成员覆盖。

要避免此冲突,必须使用不同的属性名称存储几何。您可以使用ol.format.GeoJSONgeometryName选项来控制它:

var geoJSONFormat = new ol.format.GeoJSON({
    geometryName: 'actualGeometry'
});
geoJSONFormat.readFeatures(geojsonObject);