亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Mapbox GL 組合過濾器問題

Mapbox GL 組合過濾器問題

慕的地8271018 2021-08-26 20:13:41
我在使用 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);
查看完整描述

1 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

這是我多次陷入的陷阱。有“舊語法”和“新語法”。


舊語法: ['==', '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 無法識別更復雜的表達式,這些表達式是有效的“舊語法”。因此,在任何地方使用新語法通常是最安全的.)


查看完整回答
反對 回復 2021-08-26
  • 1 回答
  • 0 關注
  • 565 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號