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

问题描述 投票:0回答:2

我正在使用

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");

有没有办法从样式中删除标签?

javascript mapbox mapbox-gl-js mapbox-gl
2个回答
19
投票

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

如果在运行时删除所有标签层对你来说很重要,你可以做类似的事情

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

0
投票

很抱歉复活了一个我在谷歌上搜索时出现的老问题。我的目标是能够随意打开和关闭标签,所以我将上面的代码修改为:

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");
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.