mapbox gl setFilter按indexOf,包含或子字符串进行过滤

我想使用setfilter表达式按子字符串为tileset中的给定功能属性过滤。注意:我不想加载tileset外部的功能数组,我希望它仅使用setfilter,不使用getFeatures函数并且不循环。如果用户开始键入“ smith ..”,则仅使用setfilter键入的功能将被过滤掉。

我只看到"==""match",但是看不到不区分大小写的子字符串过滤,例如indexOfcontainsLike等。类似{例如,先从{1}}到['contains',feature.prop,'smi']

我看到了mapbox示例中的示例,用于在您键入时进行过滤,但是我只想使用['contains','smith']。它似乎不支持我想做的事,但我想无论如何我都会问。必须从磁贴集中填充任何本地要素阵列,这是浪费客户端资源。它破坏了将数据放在磁贴集中的目的。

是否有用于通过部分字符串而不是完全匹配来解析要素属性的标准表达式?

zhejun4767 回答:mapbox gl setFilter按indexOf,包含或子字符串进行过滤

您已经注意到,Mapbox-GL表达式不支持子字符串或正则表达式。因此,我认为唯一的解决方法是遵循您提到的方法:获取属性值列表并将其用作自动完成功能。

有两种获取属性值列表的方法,这些方法不需要进行单独的,可能是多余的查询。

  1. 使用TileJSON中的值。依靠TileJSON的生成方式,它通常包含每个属性的最常用值的列表(我认为最多为1000个左右)。
  2. 使用querySourceFeatures()获取当前视口中的所有要素,然后向下过滤以查找您关心的属性的值。如果用户要针对当前不在视口中的物体进行过滤,这将无济于事。
本文链接:https://www.f2er.com/2895213.html

大家都在问