代码之家  ›  专栏  ›  技术社区  ›  Stranger in the Q

映射框:禁用一个要素渲染

  •  2
  • Stranger in the Q  · 技术社区  · 6 年前

    我只想禁用一个拉伸建筑的渲染在我的例子中,我正在寻找类似这样的东西

    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"]
    

    地图框-gl-0.44.1

    1 回复  |  直到 6 年前
        1
  •  1
  •   stdob--    6 年前

    过滤器从当前要素的属性中检索属性值。确保建筑id位于属性中:

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

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

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

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