如何在Mapbox GL JS中将图层过滤器重置为初始值?
MapLibre/Mapbox GL JS 重置图层过滤器到初始值的方案
MapLibre/Mapbox GL JS 没有内置的重置过滤器到初始值的方法,你想到的初始化时存储初始过滤器的方案是最靠谱的解决方式,具体实现可以这么做:
提前存储初始过滤器
在设置图层初始过滤规则的时候,把这个规则存在一个变量里,方便后续复用:// 定义并保存初始过滤器 const initialFilter = ["all", ["==", "size", "large"]]; // 给图层设置初始过滤 map.setFilter('layerID', initialFilter);如果你的图层是从本地JSON样式文件加载的,也可以在地图初始化完成后,直接获取图层的初始过滤器并存储:
// 地图加载完成后获取初始过滤器 const initialFilter = map.getLayer('layerID').filter;追加新过滤条件
当需要添加额外筛选(比如按分类过滤)时,基于初始过滤器扩展即可:// 追加分类A的筛选条件 map.setFilter('layerID', ["all", ...initialFilter, ["==", "category", "A"]]);重置回初始过滤状态
要恢复到只保留size:large的初始状态时,直接把存储的初始过滤器重新设置给图层:// 重置过滤器到初始值 map.setFilter('layerID', initialFilter);
注意:不要用map.setFilter('layerID', null),这个操作会完全移除图层的所有过滤器,导致原本的size:large筛选也失效,不符合你的需求。
内容的提问来源于stack exchange,提问作者Robbert
相关产品推荐
相关产品推荐

