OL:更改投影(使用Proj4)不会显示geojson图层(尽管setVisible为true)

时间:2018-12-30 22:11:28

标签: openlayers openlayers-5

使用layerswitcher,可以切换几个GEOJSON图层的可见性。 例如。在投影为3857的地图上,图层A是可见的(因此setVisible为true)。 当我将投影更改为例如4326(或使用Proj4的另一个),我得到了显示此新投影的新地图,但我的图层A不可见。在layerswitcher中,仍检查该层A。即使选中/取消选中复选框也不会执行任何操作。当我在A层上执行getVisible时,它仍然返回'true'。

如果将map-projection更改为原始的(3857),则可以看到我的图层。

即使更改投影,如何使A层保持可见?

1 个答案:

答案 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);
        });
    }
});