Openlayers OL:更改投影(使用Proj4)不会显示geojson层(尽管setVisible为true)
使用layerswitcher可以切换多个GEOJSON层的可见性。 例如,图层A在投影为3857的地图上可见(因此setVisible为真)。 当我将投影更改为例如4326(或使用Proj4的另一个投影)时,我会得到显示此新投影的新地图,但我的图层A不可见。在layerswitcher中,此层A仍处于选中状态。即使选中/取消选中该复选框也不起任何作用。当我在层a上执行getVisible时,它仍然返回“true” 如果我将贴图投影更改为原始投影(3857),则我的图层可见 即使更改投影,如何使层A保持可见?矢量层(和覆盖层)不会自动重新投影。如果更改视图投影,还需要将向量和覆盖变换为新投影。只要不使用图层组,此代码就可以工作Openlayers OL:更改投影(使用Proj4)不会显示geojson层(尽管setVisible为true),openlayers,openlayers-5,Openlayers,Openlayers 5,使用layerswitcher可以切换多个GEOJSON层的可见性。 例如,图层A在投影为3857的地图上可见(因此setVisible为真)。 当我将投影更改为例如4326(或使用Proj4的另一个投影)时,我会得到显示此新投影的新地图,但我的图层A不可见。在layerswitcher中,此层A仍处于选中状态。即使选中/取消选中该复选框也不起任何作用。当我在层a上执行getVisible时,它仍然返回“true” 如果我将贴图投影更改为原始投影(3857),则我的图层可见 即使更改投影,如何使
map.getOverlays().getArray().forEach(function(overlay){
if (overlay.getPosition()) {
overlay.setPosition(ol.proj.transform(overlay.getPosition(), oldProjection, newProjection));
}
});
map.getLayers().getArray().forEach(function(layer){
if (layer.getSource() && layer.getSource().forEachFeature) {
layer.getSource().forEachFeature(function(feature){
feature.getGeometry().transform(oldProjection, newProjection);
});
}
});
矢量层(和覆盖层)不会自动重新投影。如果更改视图投影,还需要将向量和覆盖变换为新投影。只要不使用图层组,此代码就可以工作
map.getOverlays().getArray().forEach(function(overlay){
if (overlay.getPosition()) {
overlay.setPosition(ol.proj.transform(overlay.getPosition(), oldProjection, newProjection));
}
});
map.getLayers().getArray().forEach(function(layer){
if (layer.getSource() && layer.getSource().forEachFeature) {
layer.getSource().forEachFeature(function(feature){
feature.getGeometry().transform(oldProjection, newProjection);
});
}
});