如何在 Mapbox JS setFilter() 中编写输入多个值的表达式进行过滤?
How to write expression for inputting multiple values in Mapbox JS setFilter() for filtration?
我可以使用如下表达式在我的 mapbox setFilter() 中成功传递单个值:
var business_domain_values = {0 : 'Corporate', 1 : 'Industrial',
2 : 'Infrastructure', 3 : 'Institutional',
4 : 'Commercial', 5 : 'Residential',
6 : 'Healthcare', 7 : 'Science & Technology',
8 : 'Financial Facilities'};
map.setFilter('AW', ['any', ['in', 'Corporate', ['get', 'Business_Unit']]]);
OR
map.setFilter('Key Prospect', ['==', ['get', 'Business_Unit'], business_domain_values[0]]);
但是,我想传递多个值,如 Commercial、Industrial 等,以进行过滤。努力构建像
这样的表达式
方法 #1。
map.setFilter('AW', ['any', ['in', ['Corporate', 'Industrial'], ['get', 'Business_Unit']]]);
这导致
evented.js:145 错误:layers.AW.filter[1][1][0]:未知表达式“公司”。如果您想要文字数组,请使用 ["literal", [...]].
方法 #2。
map.setFilter('AW', ['any', ['in', ['literal', ['Corporate', 'Industrial']], ['get', 'Business_Unit']]]);
这导致
evented.js:145 错误:layers.AW.filter[1]:预期的第一个参数是布尔值、字符串、数字或空值类型,但发现数组 而不是
感谢您花时间阅读本文,您为此付出的努力非常宝贵。
去年遇到了类似的问题。想我有一个解决方案给你!我相信您需要切换 ["get"]
参数和 ["literal"]
参数的顺序。此代码段应该适合您。
map.setFilter("AW", [
"any",
["in", ["get", "Business_Unit"], ["literal", ["Corporate", "Industrial"]]
]);
这是一个带有工作示例的代码沙箱 link
https://codesandbox.io/s/mapbox-filters-example-hhtg5
希望对您有所帮助!我一直在为 Mapbox 编写一系列指南,您可能也会感兴趣。这里有一些 links:
我可以使用如下表达式在我的 mapbox setFilter() 中成功传递单个值:
var business_domain_values = {0 : 'Corporate', 1 : 'Industrial',
2 : 'Infrastructure', 3 : 'Institutional',
4 : 'Commercial', 5 : 'Residential',
6 : 'Healthcare', 7 : 'Science & Technology',
8 : 'Financial Facilities'};
map.setFilter('AW', ['any', ['in', 'Corporate', ['get', 'Business_Unit']]]);
OR
map.setFilter('Key Prospect', ['==', ['get', 'Business_Unit'], business_domain_values[0]]);
但是,我想传递多个值,如 Commercial、Industrial 等,以进行过滤。努力构建像
这样的表达式方法 #1。
map.setFilter('AW', ['any', ['in', ['Corporate', 'Industrial'], ['get', 'Business_Unit']]]);
这导致
evented.js:145 错误:layers.AW.filter[1][1][0]:未知表达式“公司”。如果您想要文字数组,请使用 ["literal", [...]].
方法 #2。
map.setFilter('AW', ['any', ['in', ['literal', ['Corporate', 'Industrial']], ['get', 'Business_Unit']]]);
这导致
evented.js:145 错误:layers.AW.filter[1]:预期的第一个参数是布尔值、字符串、数字或空值类型,但发现数组
感谢您花时间阅读本文,您为此付出的努力非常宝贵。
去年遇到了类似的问题。想我有一个解决方案给你!我相信您需要切换 ["get"]
参数和 ["literal"]
参数的顺序。此代码段应该适合您。
map.setFilter("AW", [
"any",
["in", ["get", "Business_Unit"], ["literal", ["Corporate", "Industrial"]]
]);
这是一个带有工作示例的代码沙箱 link https://codesandbox.io/s/mapbox-filters-example-hhtg5
希望对您有所帮助!我一直在为 Mapbox 编写一系列指南,您可能也会感兴趣。这里有一些 links: