首页 > 解决方案 > mapbox gl setFilter 按特征属性是一个数组

问题描述

我有一个特征属性,它是一个 id 数组:feature.properties.ownerTypeIds: [1,2,3]

我有一个表格。在其中它有一个用于生成数组的所有者类型的多选:[1,2]

将要素数组与值数组进行比较的 mapbox gl 最新版本表达式是什么?Match 似乎不支持作为数组的特征属性。

如果功能数组中的任何 id 也在选定的选项数组中,我希望它设置为 true。因此,当它与“全部”中的许多其他过滤器结合使用时,它将起作用。所有这些都适用于许多其他过滤器,我只需要这里介绍的 ownerTypeIds 数组场景的帮助。

用户选择的任何值是否在功能的 ownerTypeIds 数组中?

我会很感激任何帮助。mapbox 表达式文档似乎不支持作为数组的特征属性。我希望我的评估是错误的!

感谢你!

谢谢,唐尼

标签: mapboxmapbox-gl-js

解决方案


从地图框支持...

嗨,唐尼,

感谢您联系 Mapbox 支持。

你是对的; Feature 的属性只支持简单类型。话虽如此,您无法在运行时使用样式规范比较这两个列表。供您参考,这里有一个公开跟踪的问题。 https://github.com/mapbox/mapbox-gl-js/issues/2434

一种解决方法是创建一个新属性,该属性计算一个数组中的元素是否也存在于另一个数组中并设置一个真/假值。然后该布尔值可用于在您的过滤器中进行比较。

如果您还有任何问题,请告诉我

问候,


推荐阅读