在 OpenLayers 3 中更新底图

sfl*_*che 1 openlayers-3

我觉得 OpenLayers 3 没有像 OpenLayers 2 那样区分底图和其他图层(OL2 图层有一个isBaseLayer属性,但我在 OL3 中没有看到等效的)。

我猜在向地图添加图层时必须有某种方法来设置顺序......

map.addLayer(newBasemap, 1);  // where all other layers would have an ordering greater than 1
Run Code Online (Sandbox Code Playgroud)

但是当我查看文档时,我看到的只是addLayer(layer)将新层放在其他层之上。

如何确保新(底图)图层放置在其他图层下方而不是顶部?

sfl*_*che 5

在 Christopher Jennison 的博客上找到了答案。

事实证明,可以使用以下命令在特定索引处添加图层:

map.getLayers().insertAt(1, layer);
Run Code Online (Sandbox Code Playgroud)

在我替换已经存在的底图的情况下,我需要先删除 basemap1,然后在其位置添加 basemap2,我可以这样做:

map.removeLayer(basemap1);
map.getLayers().insertAt(1, basemap2);
Run Code Online (Sandbox Code Playgroud)

胡扎

更新:

感谢erilem提供了一个更直接的解决方案,setAt,它只是替换给定索引处的图层......

map.getLayers().setAt(1, basemap2);
Run Code Online (Sandbox Code Playgroud)