如何在Mapbox中正确使用setFilter

时间:2019-03-24 10:33:46

标签: javascript vue.js mapbox

我正在尝试从geojson文件中过滤添加到地图的图层。每次单击按钮以过滤地图时,它都会隐藏整个图层,而不是该图层上的单个元素。有人可以告诉我我要去哪里了/不了解.setFilter()

我尝试了多种使用过滤器的方法,例如map.setFilter('allBuildings',['==','properties.name','buildingone']);

但是,它仍然隐藏了整个图层。如果有人可以向正确的方向推动我,我将不胜感激。谢谢

在这里,我将源和图层添加到地图上,一切正常。

map.addSource('buildings', {type: 'geojson', data: '/buildings.geojson'});

map.addLayer({
  "id": "allBuildings",
  "type": "symbol",
  "source": "buildings",
  "layout": {
    "icon-image": "marker-building",
    "icon-size": 0.25
  }
});

然后我尝试使用过滤该层

map.setFilter('allBuildings', ['>', 'properties.height', '30']);

这时,它隐藏了图层,而不仅仅是隐藏高度大于30的对象。

这是我的geojson文件的一部分。

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "name": "buildingone",
        "height": "52",
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          114.1454573,
          22.2760386
        ]
      }
    }
  ]
}

0 个答案:

没有答案