mapbox:禁用一个要素渲染

时间:2018-04-12 13:40:05

标签: javascript mapbox-gl-js

我想在我的情况下禁用只有一个挤压建筑物的渲染,我正在寻找类似这样的东西

map.on('load', function () {
    map.addLayer({
        'id': '3d-buildings',
        'source': 'mapbox',
        'source-layer': 'building',
        "filter": ["!=", "id", "12345"],
        'type': 'fill-extrusion',
        'paint': {
            'fill-extrusion-color': '#bbb',
            'fill-extrusion-height': 10,
            'fill-extrusion-base': 0,
            'fill-extrusion-opacity': 1
        }
    });

})

以下表达式不正确:

"filter": ["!=", "id", "12345"]

mapbox-GL-0.44.1

1 个答案:

答案 0 :(得分:1)

过滤器从当前要素的属性中检索属性值。确保建筑物ID在属性中:

{
  "type": "Feature",
  "properties": {
    "id": "12345",
    "base_height": 30,
    "height": 40
  },
  "geometry": {...}
  }
}

更新Gets the feature's id, if it has one["id"]。当然,您需要考虑可能的标识符类型:

"filter": ["!=", ["id"], 12345]

例如,点击建筑物隐藏它:[https://jsfiddle.net/yedg641a/]