通过Mapbox通过过滤器高效加载

时间:2020-05-05 16:45:33

标签: mapbox mapbox-gl-js mapbox-gl

我有几个mapbox数据集,每个数据集都有位于不同城市的一组要素。每个地图项都有一个名为city的字段,其中包含地图项所在的城市(例如city = "new york")。在mapbox studio中,我具有一种由每个数据集构成的图层的样式。我想用包含所有带有city == "new york"的要素的边界框加载地图(使地图视图适合要素bbox)。如何做到这一点,最好,而无需加载不满足city=="new york"

的功能

2 个答案:

答案 0 :(得分:1)

在Mapbox Studio中选择相关图层后,选择要控制其可见性的属性。例如,假设您有兴趣为数据集中的每个功能显示一个文本字段(相同的逻辑也可以应用于图标图像)。选定图层的此属性后,在图层编辑器中单击“具有数据条件的样式”选项。然后,系统将提示您选择一个数据字段(在您的情况下为city),然后提示您设置该数据字段的值(在您的情况下为new york)。

答案 1 :(得分:1)

如果我对您的理解是正确的,那么您将拥有一个包含所有城市的底图,但是当您将地图加载到mapbox-gl-js中时,您希望将其仅过滤到一个特定的城市。

您可以通过致电:

map.setFilter('my-cities-layer', ['==', ['get', 'city'], 'new york']);

实际上,没有一种简单的方法来过滤所有层以仅包含带有该标记的数据。