Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openlayers OL:更改投影(使用Proj4)不会显示geojson层(尽管setVisible为true)_Openlayers_Openlayers 5 - Fatal编程技术网

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

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),则我的图层可见 即使更改投影,如何使

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

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

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

矢量层(和覆盖层)不会自动重新投影。如果更改视图投影,还需要将向量和覆盖变换为新投影。只要不使用图层组,此代码就可以工作

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