首页 > 解决方案 > 使用“all”运算符的 Mapbox 表达式有什么问题?

问题描述

我有一个带有多个多边形的 geojson。每个多边形都有一个名称。我想显示除“boundingBox”之外的所有多边形。我在 addLayer() 中使用过滤器:

"filter": ["all",["==", "$type", "Polygon"],["!=",["string", ['get', 'name'],""], "boundingBox"]]

但没有多边形出现。

如果我做:

"filter": ["==", "$type", "Polygon"]

所有多边形都出现了。

这里出了什么问题?

标签: javascriptfiltermapboxgeojson

解决方案


看起来您混合使用了已弃用的过滤器语法 ( $type) 和表达式语法,这是不允许的。

表达式语法和下面不推荐使用的语法不能混合在一个过滤器定义中。 https://docs.mapbox.com/mapbox-gl-js/style-spec/#other-filter

尝试

"filter": ["all",["==", ["geometry-type"], "Polygon"],["!=",["string", ['get', 'name'],""], "boundingBox"]]

推荐阅读