Openlayers 3 在OpenLayers 3中更新底图

Openlayers 3 在OpenLayers 3中更新底图,openlayers-3,Openlayers 3,我感觉到OpenLayers 3没有像OpenLayers 2那样区分底图和其他层(OL2层有一个,但我在OL3中没有看到一个等价物) 我猜在向地图添加图层时,一定有某种方法可以设置顺序…类似于 map.addLayer(newBasemap, 1); // where all other layers would have an ordering greater than 1 但是当我查看文档时,我看到的只是将新层放在其他层的顶部 如何确保新的(底图)图层位于其他图层的下方而不是顶部?找到

我感觉到OpenLayers 3没有像OpenLayers 2那样区分底图和其他层(OL2层有一个,但我在OL3中没有看到一个等价物)

我猜在向地图添加图层时,一定有某种方法可以设置顺序…类似于

map.addLayer(newBasemap, 1);  // where all other layers would have an ordering greater than 1
但是当我查看文档时,我看到的只是将新层放在其他层的顶部

如何确保新的(底图)图层位于其他图层的下方而不是顶部?

找到了答案

结果表明,可以使用以下方法在特定索引处添加图层:

map.getLayers().insertAt(1, layer);
在我替换已有的basemap的情况下,我需要首先删除basemap1,然后在其位置添加basemap2,我可以这样做:

map.removeLayer(basemap1);
map.getLayers().insertAt(1, basemap2);
胡扎

更新:

由于提供了一个更直观的解决方案,
setAt
,它只需替换给定索引处的层

map.getLayers().setAt(1, basemap2);
找到了答案

结果表明,可以使用以下方法在特定索引处添加图层:

map.getLayers().insertAt(1, layer);
在我替换已有的basemap的情况下,我需要首先删除basemap1,然后在其位置添加basemap2,我可以这样做:

map.removeLayer(basemap1);
map.getLayers().insertAt(1, basemap2);
胡扎

更新:

由于提供了一个更直观的解决方案,
setAt
,它只需替换给定索引处的层

map.getLayers().setAt(1, basemap2);

请注意,您可以使用
map.getLayers().setAt(索引,层)
将给定索引处的层替换为新层。请注意,您可以使用
map.getLayers().setAt(索引,层)
将给定索引处的层替换为新层。