0

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

如果我将地图投影更改为原始投影(3857),我的图层是可见的。

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

4

1 回答 1

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);
        });
    }
});
于 2018-12-30T22:29:07.407 回答