删除Mapbox GL JS上的所有标签?

12

我正在使用Mapbox Dark v9样式,并希望删除所有标签。

我在这里找到了一个标签列表链接

我已经尝试使用map.removeLayer函数来删除一些标签,例如:

map.removeLayer("place_label");

以及:

map.removeLayer("place-city-lg-n");
map.removeLayer("place-city-lg-s");
map.removeLayer("place-city-md-n");
map.removeLayer("place-city-md-s");
map.removeLayer("place-city-sm");
有没有一种方法可以从样式中删除标签?
2个回答

20

如果你只是想要一个没有标签的黑色底图 - 也就是说,在运行时以编程方式删除它们对你来说并不重要 - 你可以在Mapbox Studio中创建一个新的样式,使用Dark模板,并使用样式编辑器选择并删除所有标签图层。然后,你可以发布样式并在应用程序中使用其URL。

screenshot

如果在运行时删除所有标签图层对你很重要,你可以这样做:

map.style.stylesheet.layers.forEach(function(layer) {
    if (layer.type === 'symbol') {
        map.removeLayer(layer.id);
    }
});

1
请注意,这也将删除符号而非文本“标签”的图层。检查是否存在text-field属性可能更安全。 - Steve Bennett
你能说一下如何在Mapbox中获取没有任何标签的黑暗地图吗? - gauti
现在无法删除主图层,但我们可以将它们隐藏起来。 - Bohdan Didukh

1

抱歉,我又挖出了一个旧问题,这是我在谷歌搜索时遇到的。我的目标是能够随意切换标签的开关状态,因此我将上面的代码修改为:

let show = false; //or true, etc.                   
map.style.stylesheet.layers.forEach(function(layer) {
    if (layer.type === 'symbol') {
        map.setLayoutProperty(layer.id,"visibility", show?"visible":"none");
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接