簡體   English   中英

使用數組Mapbox GL JS過濾

[英]Filtering with array Mapbox GL JS

我正在嘗試創建一個突出顯示層以在地圖上選擇時顯示某些點-newMarker信號來自服務器,並帶有一個objectID,然后我想將相應的點(由當前變量表示)添加到過濾后的層。 但是,過濾器未選擇要添加到其中的任何點:

 socket.on('newMarker', function(data) {
     var current = map.queryRenderedFeatures({layers:['tax']}) 
                  [parseInt(data['newMarker'])];
     SPoints.unshift(current.properties.ID);

     var filter = ['match', ['get', 'ID'],'SPoints', true, false];
     map.setFilter('place-highlight', filter);

     var newLayer = map.queryRenderedFeatures({layers:['place- 
                    highlight']});
});

我嘗試將點添加到的層:

 map.addLayer({ 
      'id': 'place-highlight',
      'type': 'circle', 
      'source': 'tax',
      'source-layer': 'AllPointsGeoJSON-12eyog',
      'paint': {
        'circle-color': '#00ff00',
        'circle-radius': 20,
        'circle-opacity': 1,
      },
      'filter': ['==', 'ID', -1]
    });

我很確定問題出在格式化過濾器的方式上-如果我顛倒了true和false的順序,那么我會在每個點上看到所有樣式。 非常感謝您的幫助!

出問題的是SPoints是一個局部變量(大概是數組),但是您傳遞的是字符串"SPoints"

您應該這樣做:

var filter = ['match', ['get', 'ID'], SPoints, true, false];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM