使用数组Mapbox GL JS进行过滤

使用数组Mapbox GL JS进行过滤,mapbox,mapbox-gl-js,mapbox-marker,Mapbox,Mapbox Gl Js,Mapbox Marker,我正在尝试创建一个高亮显示层,以在地图上选择时显示某些点-newMarker信号来自服务器,带来一个objectID,然后我想将相应的点(由当前变量表示)添加到过滤层。但是,过滤器不会拾取任何添加到其中的点: socket.on('newMarker', function(data) { var current = map.queryRenderedFeatures({layers:['tax']}) [parseInt(data['newMar

我正在尝试创建一个高亮显示层,以在地图上选择时显示某些点-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]
    });

我很确定问题在于我格式化过滤器的方式——如果我颠倒真与假的顺序,我会在每一点上看到所有样式。非常感谢你的帮助

问题是,
SPoints
是一个局部变量(大概是一个数组),但您传递的是一个字符串,
“SPoints”

您应该这样做:

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

问题是,
SPoints
是一个局部变量(大概是一个数组),但您传递的是一个字符串,
“SPoints”

您应该这样做:

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

你是最好的谢谢你发现了这一点!看起来你很快就不需要
、真、假部分了:你是最棒的,非常感谢你发现了这一点!看起来您很快就不需要
、true和false部分了: