由于微信小程序无法进行DOM操作,导致像openlayers、leaflet这种常用的js库无法在微信小程序内使用,导致加载高德、百度、mapbox还有手绘地图之类的自定义瓦片地图数据变得很困难。
目前,大多数情况下是使用以下两种方法实现加载自定义的瓦片数据。
- 使用web-view
优势:可以使用丰富的现有js库,功能全面
问题:web-view加载效率和功能限制等诸多问题。
- 使用官方的图片遮罩层。
优势:可以使用目前小程序开放的所有地图功能,比较全面。
问题:地图范围限制、地图缩放等级限制、图片大小限制、无法设置地图边界等等
这里给大家推荐一个小程序插件,该插件是基于leaflet库开发,独立于官方map组件的一款地图插件,可以加载自定义的瓦片数据。
leafletwx(leaflet小程序版)开源地址:https://gitee.com/zz2022com/leafletwx
优势:解决了使用遮罩层带来的地图范围限制、地图缩放等级限制、图片大小限制、无法设置地图边界等等问题;基于leaflet开发且完全开源,兼容部分leaflet插件(如加载高德、百度、mapbox瓦片数据,这些插件一般不涉及DOM操作)。
缺点:目前仅支持地图加载、定位缩放、POI显示、路径显示等常用功能,更高级的功能需要另行开发。