首页 > 解决方案 > 从矢量切片源对几何图形进行操作

问题描述

在 MapBox 地图中加载矢量切片源时,我想在显示某些几何图形之前对其进行操作。但是,我不确定这是否可能,如果可以,更不用说如何完成了。

例如,我想创建一个获取 OpenStreetMap 瓦片数据的 MapBox 源。但在此数据显示为图层之前,我需要过滤掉所有没有标签"landuse='industrial'" 的土地利用特征。之后,剩余的几何图形应该增长(可能通过 TurfJS?)用户指定的距离。

我希望在纯客户端应用程序中解决这个问题,因为我已经尝试过使用附带的后端服务器并发现它不合适。因此,如果有人能指出我正确的方向,将不胜感激!

标签: mapboxopenstreetmapmapbox-gl-jsturfjsvector-tiles

解决方案


这是可能的,但相当复杂。一种有效的方法:

  1. 将矢量切片源添加到样式。
  2. 为您修改的数据添加一个 GeoJSON 源,并添加一个图层来显示它。
  3. 向事件或类似事件添加处理程序sourcedata,以便在用户平移新数据到达时触发。
  4. 在触发器中,调用querySourceData以查找与您的查询匹配的所有几何图形。
  5. 然后使用 Turf(或buffer()lineOffset)扩展每个多边形的大小。
  6. 使用 .将生成的多边形添加到额外的图层中setData()

性能会很差,但是通过一些缓存和选择性的数据再生,你可能会得到一些有用的东西。


推荐阅读