OpenLayers GeoJSON 层投影不起作用
OpenLayers GeoJSON Layer projection not working
使用下面的代码,我无法让我的单个 GeoJSON 点要素显示在地图上。或者如果它确实出现在地图上的正确位置,则可能。它出现在德国,而它应该出现在澳大利亚的塔斯马尼亚。如果我根本不提供投影,它会出现在相同的位置。因此,我设置投影的方式似乎存在一些问题。
我觉得我使用 defaultDataProjection
and/or featureProjection
不正确,但我发现文档对于如何使用它们相当不清楚。
相同的投影适用于我的其他(非 GeoJSON)图层。
我如何更正我的代码才能使其正常工作?
var geojsonObject = {"type":"FeatureCollection","features":[{"geometry":{"type":"Point","coordinates":[503619.026899999939,5420925.347199999727]},"properties":{"label":{}},"type":"Feature"}]};
proj4.defs('layerProj', '+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ')
var vectorSource = new ol.source.Vector({
features: (new ol.format.GeoJSON({
defaultDataProjection: 'layerProj',
}).readFeatures(geojsonObject, { featureProjection: 'layerProj' }))
})
var vectorLayer = new ol.layer.Vector({
source: vectorSource,
style: new ol.style.Style({image: new ol.style.Circle({fill: new ol.style.Fill({color: '#8888FF'}), radius: 10, points: 0})}),
});
map.addLayer(vectorLayer);
你的format:
应该是features:
另外OpenLayers 4中GeoJSON选项中的defaultDataProjection
在更高版本中更改为dataProjection
,所以最好指定dataProjection
在 readFeatures
选项中,其中名称在所有版本中都相同。 featureProjection
应始终设置为视图投影
features: new ol.format.GeoJSON().readFeatures(geojsonObject, {
dataProjection: 'layerProj',
featureProjection: map.getView().getProjection()
})
如果您使用的是 OpenLayers 5 或更高版本,您还需要在 layerproj
定义后注册 proj4
ol.proj.proj4.register(proj4);
使用下面的代码,我无法让我的单个 GeoJSON 点要素显示在地图上。或者如果它确实出现在地图上的正确位置,则可能。它出现在德国,而它应该出现在澳大利亚的塔斯马尼亚。如果我根本不提供投影,它会出现在相同的位置。因此,我设置投影的方式似乎存在一些问题。
我觉得我使用 defaultDataProjection
and/or featureProjection
不正确,但我发现文档对于如何使用它们相当不清楚。
相同的投影适用于我的其他(非 GeoJSON)图层。
我如何更正我的代码才能使其正常工作?
var geojsonObject = {"type":"FeatureCollection","features":[{"geometry":{"type":"Point","coordinates":[503619.026899999939,5420925.347199999727]},"properties":{"label":{}},"type":"Feature"}]};
proj4.defs('layerProj', '+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ')
var vectorSource = new ol.source.Vector({
features: (new ol.format.GeoJSON({
defaultDataProjection: 'layerProj',
}).readFeatures(geojsonObject, { featureProjection: 'layerProj' }))
})
var vectorLayer = new ol.layer.Vector({
source: vectorSource,
style: new ol.style.Style({image: new ol.style.Circle({fill: new ol.style.Fill({color: '#8888FF'}), radius: 10, points: 0})}),
});
map.addLayer(vectorLayer);
你的format:
应该是features:
另外OpenLayers 4中GeoJSON选项中的defaultDataProjection
在更高版本中更改为dataProjection
,所以最好指定dataProjection
在 readFeatures
选项中,其中名称在所有版本中都相同。 featureProjection
应始终设置为视图投影
features: new ol.format.GeoJSON().readFeatures(geojsonObject, {
dataProjection: 'layerProj',
featureProjection: map.getView().getProjection()
})
如果您使用的是 OpenLayers 5 或更高版本,您还需要在 layerproj
定义后注册 proj4
ol.proj.proj4.register(proj4);