如何在Mapbox中显示选定区域中的建筑物

时间:2019-07-12 09:16:54

标签: javascript mapbox-gl-js area building

我是mapbox的初学者,所以请谅解:)

我正试图仅显示所选区域(红色区域)中的3D建筑物。不幸的是,我没有在文档中或Internet上找到任何答案,所以我决定在这里询问是否有这种可能性? 我当时正在考虑复制图块集并以某种方式提取建筑物,但我不知道如何。

您有什么想法吗?

链接到Codepen: https://codepen.io/Mativve/pen/RzORMo

mapboxgl.accessToken = '--MY-TOKEN--';
var map = new mapboxgl.Map({
  container: 'map',
  style: 'mapbox://styles/mativve/cjxzva0f6042a1cm7710cofya',
  center: [21.005950, 52.231034],
  zoom: 15,
  bearing: 20.80,
  pitch: 53.50
});

1 个答案:

答案 0 :(得分:0)

不直接支持基于区域的过滤,但是您可以实现类似的功能(有一些警告),如下所示:

  1. 致电map.queryRenderedFeatures(),将所有建筑物移至当前视口。
  2. 使用Turf的booleanContains函数在指定的多边形内创建一系列建筑物。
  3. 使用其他一些属性(例如建筑物标识符)构造仅与那些过滤器匹配的过滤器。
  4. 在建筑物图层上调用map.setFilter(),以便仅可见那些建筑物。