【问题标题】:Filtering with array Mapbox GL JS使用数组 Mapbox GL JS 进行过滤
【发布时间】:2018-07-11 01:33:56
【问题描述】:

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

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

【问题讨论】:

    标签: mapbox mapbox-gl-js mapbox-marker


    【解决方案1】:

    出了什么问题,SPoints 是一个局部变量(大概是一个数组),但您传递的是一个字符串 "SPoints"

    你应该这样做:

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

    【讨论】:

    猜你喜欢
    • 2017-08-10
    • 2022-11-17
    • 2017-01-26
    • 2016-06-05
    • 1970-01-01
    • 2021-01-30
    • 2016-07-07
    • 2017-03-14
    • 2017-04-24
    相关资源
    最近更新 更多