Mapbox默认的坐标是WGS84的墨卡托投影,与国内互联网厂商的坐标系不一致,通常我们只能加载天地图等无偏移的地图服务,如果要加载高德、百度的一些服务就没法与现有的数据叠加在一起,看着丰富的数据不能用,很是着急,很是头疼。网上也有一些插件,但是存在性能问题、不能贴地等问题。
通过阅读Mapbox的文档,可以看到其支持一个image类型的Source,就是把一张静态图作为数据源,通过限定图片的空间范围,准确叠加到地图上。借此思路,我们可以请求视地图范围内的高德、百度地图瓦片,合并成一个大图,然后对其GCJ02、BD09等坐标进行校准,计算准确的WGS84坐标范围,进而叠加到天地图底图上。这算是一种取巧方式,在瓦片的请求、加载和渲染调度上肯定不能和自带的Raster类型的Soruce一样好,所以这也是本功能后面优化的一个方向,但是这种方式以及能够实现两种地图的无偏移叠加、能够完美贴地。
下面请看叠加高德地图的效果:
代码在这里:
关注公众号交流知识哇😄