Threebox图层是否支持对接瓦片源 而非仅适配Mapbox GL JS的GeoJson源
Threebox图层对接瓦片源实现方案
首先明确:官方原生Threebox 仅支持GeoJSON作为图层数据源,不支持直接对接瓦片源,但可以通过自定义实现满足需求,具体可行方案如下:
方案1:监听Mapbox瓦片加载事件实现
- 绑定Mapbox的
tile.load事件,在回调中获取当前视口内加载完成的矢量/栅格瓦片数据 - 解析瓦片内的带高程点位要素,调用Threebox提供的
tb.projectToWorld(lng, lat, elevation)方法将WGS84带高程坐标转换为Three.js世界坐标 - 调用
tb.addSymbol()方法将对应图标/标识渲染到目标位置 - 同步监听
tile.unload事件,在瓦片卸载时销毁对应的Threebox对象,避免内存泄漏
方案2:自定义瓦片调度逻辑(适合大规模点位场景)
- 复用Mapbox内置的瓦片调度能力,自行实现瓦片请求、解析、要素缓存逻辑
- 瓦片进入视口时主动拉取对应瓦片的高程点位数据,批量添加到Threebox图层
- 瓦片移出视口时批量清理对应Threebox对象,性能优于方案1
注意事项
- 所有瓦片要素坐标必须和Threebox的墨卡托投影坐标系对齐,避免出现渲染偏移
- 可配合瓦片抽稀逻辑控制单视口内的Threebox渲染对象数量,避免帧率过低
内容的提问来源于stack exchange,提问作者Yoad
相关产品推荐
相关产品推荐

