Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Mapbox GL map.setFilter中使用'in'表达式_Mapbox_Mapbox Gl Js - Fatal编程技术网

如何在Mapbox GL map.setFilter中使用'in'表达式

如何在Mapbox GL map.setFilter中使用'in'表达式,mapbox,mapbox-gl-js,Mapbox,Mapbox Gl Js,我试图根据一组条件过滤geoJson层(称为“目的地”)。我的“目的地”层有一个名为uniqueID的字符串类型的属性,大多数时候只有一个数字ID,但有时有多个。我想根据ID数组过滤此层(使用map.setFilter)。过滤器应该这样做:如果在ID数组中找到“destination”层中的任何uniqueID值,则过滤掉该特征 下面是我的“目的地”层的一个片段: 下面是我可能使用的ID数组示例:[20009841393] 我尝试过使用表达式(文档)中的来使用过滤器,如下所示: let this

我试图根据一组条件过滤geoJson层(称为“目的地”)。我的“目的地”层有一个名为
uniqueID
的字符串类型的属性,大多数时候只有一个数字ID,但有时有多个。我想根据ID数组过滤此层(使用
map.setFilter
)。过滤器应该这样做:如果在ID数组中找到“destination”层中的任何
uniqueID
值,则过滤掉该特征

下面是我的“目的地”层的一个片段:

下面是我可能使用的ID数组示例:
[20009841393]

我尝试过使用表达式(文档)中的
来使用过滤器,如下所示:

let thisFilter=[“any”].concat(uniqueIDs.map(id=>[“in”,id,[“get”,“uniqueID”]]);
map.setFilter(“目的地”,thisFilter);
但我一直收到这样的错误信息:

Error: "layers.destinations.filter[0][2]: string, number, or boolean expected, array found"
但是,文件规定如下:

["in",
    keyword: InputType (boolean, string, or number),
    input: InputType (array or string)
]: boolean
表达式中的第三个参数应该是数组。那我为什么会犯这样的错误呢


有什么想法吗?谢谢大家!

我认为你的错误与
中的
无关。您可以通过简化表达式,将
any
中的单个
分开来发现这一点

您的错误是
any
采用了数量可变的参数:

['any', ['in', ...], ['in', ...]]
鉴于您正在传递一个数组:

['any', [['in', ...], ['in', ...]]]
我会这样改写你的表达:

let thisFilter=[“any”,…uniqueID.map(id=>[“in”,id,[“get”,“uniqueID”]]);
['any', [['in', ...], ['in', ...]]]