如何在 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 中查找所有图层?最终我只想在水上而不是在陆地上显示自定义图层的主要内容,如果未能解决你的问题,请参考以下文章

mapbox gl 上的 ArcGis 图层

mapboxGL2中Terrain的离线化应用

mapboxGL2中Terrain的离线化应用

动态计算图层的中心坐标、缩放和停止

Mapbox GL Js:添加和删除 GeoJSON 源和图层

在 SQL Server 中,当我只知道一个函数名时如何查找数据库名称