Mapbox GL JS中按特定属性多值筛选FeatureLayer的实现方法
Mapbox GL JS 多属性值筛选正确写法
你之前尝试的"filter":["==","COUNTY",[array of filter values]]写法无法生效,==运算符仅支持单个值匹配,无法直接传入数组匹配多个取值,你可以使用下面两种方案实现需求:
方案1:使用in运算符(最简洁)
直接把所有需要匹配的取值依次列在in运算符后方即可:
"filter": ["in", "COUNTY", "county1", "county2", "county3"]
如果你的筛选值已经存放在数组变量中,可以在JS代码中用扩展运算符展开数组:
const targetCounties = ['county1', 'county2', 'county3'] // 给指定图层设置筛选 map.setFilter('你的图层ID', ['in', 'COUNTY', ...targetCounties])
方案2:使用match表达式(v2.3.0及以上版本支持,扩展性更强)
如果后续需要针对不同取值做差异化判断,或者需要额外处理未命中的情况,可以用match表达式实现:
"filter": [ "match", ["get", "COUNTY"], ["county1", "county2", "county3"], true, // 匹配到上述值时保留要素 false // 未匹配到时过滤要素 ]
注意:不要直接把数组整体作为
in/==运算符的第三个参数传入,必须把筛选值逐个展开传入,否则会触发类型匹配错误导致筛选不生效。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

