我有一个GeoJSON文件,如下所示:
{
"type": "FeatureCollection",
"crs": {
"type": "link",
"properties": {
"href": "http://spatialreference.org/ref/epsg/32198/proj4/",
"type": "proj4"
}
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [200000, 20000]
},
"properties": {
"id": 1,
"name": "foo"
}
}
]
}
如您所见,crs
定义使用link
类型,此处记录了此类:http://geojson.org/geojson-spec.html#linked-crs
我将文件放在启用了ol.interaction.DragDrop
交互的OL3地图中,但无法加载它。 OpenLayers 3目前不支持这种类型的crs
定义,因此无法加载它。它支持name
和EPSG
类型,请参阅:https://github.com/openlayers/ol3/blob/master/src/ol/format/geojsonformat.js#L484(下面的代码段):
if (crs.type == 'name') {
return ol.proj.get(crs.properties.name);
} else if (crs.type == 'EPSG') {
// 'EPSG' is not part of the GeoJSON specification, but is generated by
// GeoServer.
// TODO: remove this when http://jira.codehaus.org/browse/GEOS-5996
// is fixed and widely deployed.
return ol.proj.get('EPSG:' + crs.properties.code);
} else {
goog.asserts.fail('Unknown crs.type: ' + crs.type);
return null;
}
观察它,我不知道是否可以直接在OpenLayers中本地支持link
类型,因为它需要执行异步请求以在同步的代码中获取投影定义。我怀疑我遇到了这个问题。
我正在寻找解决问题的替代方案,或者我可能错误地认为可以在OL3中本地支持(使用适当的补丁)这一事实。
任何提示?
答案 0 :(得分:0)
Alexandre,你最好的选择是避免使用旧的GeoJSON链接CRS(软件支持得很差)并且1)将你的数据转换为GeoJSON的默认WGS84长/ lat - 这是最好的选择到目前为止或2)使用CRS名称,如" urn:ogc:def:crs:EPSG :: 32198"。