如何在 Mapboxgl 中查找所有图层?最终我只想在水上而不是在陆地上显示自定义图层
Posted
技术标签:
【中文标题】如何在 Mapboxgl 中查找所有图层?最终我只想在水上而不是在陆地上显示自定义图层【英文标题】:How to find all layers in Mapboxgl ? Ultimately I want to show custom layer only on water and not on land 【发布时间】:2017-08-16 04:17:43 【问题描述】:我创建了一个自定义圆形图层。我只想在水上而不是在陆地上显示这一层。我设法使用下面的命令做相反的事情(即:在陆地上而不是在水上显示图层)。 Refer this image for better understanding
map.moveLayer('多边形','水');
现在我需要知道mapboxgl使用的地层,这样我就可以调用函数map.moveLayer('polygon','land');
来实现我想要的。
我需要帮助才能找到 mapboxgl-streets 地图中存在的不同图层。但遗憾的是,Mapboxgl 没有 map.eachLayer 函数。
【问题讨论】:
【参考方案1】:这取决于您使用的地图样式。通常,您要么必须查看其源代码,要么将其加载到 Mapbox Studio 中以识别正确的图层名称。同时关注https://github.com/mapbox/mapbox-gl-js/issues/4173。
【讨论】:
【参考方案2】:您可以使用Map#getStyle
方法获取包括图层在内的整个样式的序列化表示。
map.getStyle().layers
【讨论】:
【参考方案3】:只是为了添加到 Lucas 的答案(这仍然是正确的),map.getStyle().layers
提供了样式中的所有图层,包括您明确添加的图层(通过 map.addLayer()
),以及样式中包含的图层(其中可能很多)。小心你如何过滤这些。就我而言,我创建了数组来保存我自己创建的层,以使未来的迭代更简单。
【讨论】:
以上是关于如何在 Mapboxgl 中查找所有图层?最终我只想在水上而不是在陆地上显示自定义图层的主要内容,如果未能解决你的问题,请参考以下文章