gpt4 book ai didi

javascript - Mapbox GL 合并过滤器问题

转载 作者:行者123 更新时间:2023-11-30 13:56:06 24 4
gpt4 key购买 nike

我在使用 Mapbox GL 合并过滤器时遇到问题。过滤器单独工作,但组合使用时会产生错误。自治市镇过滤器使用一组可以动态更改的值,但我只是在代码中举了一个例子,说明它可能是什么样子。每当我尝试组合过滤器时,我都会收到错误消息:“预期 [==, !=, >, >=, <, <=, in, !in, all, any, none, has, !has] 之一“找到匹配项”问题似乎是将使用“匹配”表达式的过滤器与使用“==”运算符的过滤器组合在一起。有谁知道如何解决这一问题。

var borough_val = ["BX", "BK", "MN"];

var zipCodeFilter = ["==", 'ZipCode', Number(zipcode_val)];
var boroughFilter = ['match', ['get', 'Borough'], borough_val, true, false];

var combinedFilter = ["all", zipCodeFilter, boroughFilter];
map.setFilter('parcels_fill', combinedFilter);

最佳答案

这是我掉进过几次的陷阱。有“旧句法”和“新句法”。

旧语法:['==', 'ZipCode', '90210']

新语法:['==', ['get', 'ZipCode'], '90210']

在某种程度上,旧语法仍然受支持,正如您所注意到的。但是,如果您尝试组合旧语法和新语法,Mapbox-GL-JS 会假定整个表达式都是新语法,并且无法解析。

简单的解决方法是在整个过程中使用新语法:

var borough_val = ["BX", "BK", "MN"];

var zipCodeFilter = ["==", ['get', 'ZipCode'], Number(zipcode_val)];
var boroughFilter = ['match', ['get', 'Borough'], borough_val, true, false];

var combinedFilter = ["all", zipCodeFilter, boroughFilter];
map.setFilter('parcels_fill', combinedFilter);

(也有一些情况或某些原因(无法解决的歧义?太多的努力?),Mapbox-GL-JS 无法识别更复杂的表达式,这些表达式是有效的“旧语法”。因此,通常使用它是最安全的新语法无处不在。)

关于javascript - Mapbox GL 合并过滤器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57272806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com