如何在Mapboxgl中找到所有图层?最终,我想在水面而不是陆地上展示自定义图层

时间:2017-03-23 14:28:00

标签: mapbox-gl-js mapbox-gl

我创建了一个自定义圈子图层。我想只在水面而不是陆地上展示这一层。我设法使用下面的命令做相反的事情(即:在陆地上而不是在水面上显示图层)。 Refer this image for better understanding

  

map.moveLayer('多边形''水&#39);

现在我需要知道mapboxgl使用的land层,以便我可以调用函数map.moveLayer('polygon','land');来实现我想要的。

我需要帮助才能找到mapboxgl-streets地图中的不同图层。但不幸的是,Mapboxgl没有map.eachLayer函数。

3 个答案:

答案 0 :(得分:26)

您可以使用Map#getStyle方法获取整个样式的序列化表示,包括图层。

map.getStyle().layers

答案 1 :(得分:1)

这取决于您使用的地图样式。通常,您必须查看其源或在Mapbox Studio中加载它以识别正确的图层名称。还要关注https://github.com/mapbox/mapbox-gl-js/issues/4173

答案 2 :(得分:1)

只是为了补充 Lucas 的答案(仍然是正确的),map.getStyle().layers 提供了样式中的所有图层,包括您明确添加的图层(通过 map.addLayer()),以及包含在风格(可能很多)。小心你如何过滤这些。就我而言,我创建了数组来保存我自己创建的层,以使以后的迭代更简单。