使用layerswitcher,可以切换几个GEOJSON图层的可见性。 例如。在投影为3857的地图上,图层A是可见的(因此setVisible为true)。 当我将投影更改为例如4326(或使用Proj4的另一个),我得到了显示此新投影的新地图,但我的图层A不可见。在layerswitcher中,仍检查该层A。即使选中/取消选中复选框也不会执行任何操作。当我在A层上执行getVisible时,它仍然返回'true'。
如果将map-projection更改为原始的(3857),则可以看到我的图层。
即使更改投影,如何使A层保持可见?
答案 0 :(得分:2)
矢量图层(和叠加层)不会自动重新投影。如果更改视图投影,则还需要将矢量和叠加层转换为新的投影。只要您不使用图层组,此代码就可以使用。
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);
});
}
});