使用uniapp开发app中使用到地图的坑:
1、简单使用地图的功能比较简单,仅使用到地图选点和定位功能:(其中问题集中在uni.chooseLocation中)下面是api官网地址
uni.getLocation(OBJECT) | uni-app官网
官方建议app端使用高德地图,实际是只能使用高德地图。不怕坑多的可以尝试一下谷歌地图。腾讯地图是肯定不支持的。
2、第二种情况是需要用到地图的markers(点标记)、 polygon(多边形)、polyline(数组第一项连线至最后一项)仅使用这些简单且单一展示,无复杂交互可以使用地图<map>组件。
由于map组件的在打包时会打包成原生app的组件,层级会高于其他UI组件,无论如何提高z-index层级都无法覆盖。官方提供了两个组件可以覆盖(cover-view和cover-image),可以压住地图标签,使用方法:
cover-view\cover-image必须写在地图标签内部,如下图2。注意:(如果有动画效果、渐变效果、其他复杂交互,这种方式无法实现。实现出来的效果是非常卡顿的,在此就不展示了)
图2:
<map class="map-container"
:latitude="latitude"
:longitude="longitude"
:markers="covers">
<cover-view>可以覆盖在地图上方</cover-view>
</map>
3:、第三种情况就是app中有地图,且有其他交互效果,动画效果等,最好的方式是使用H5实现地图,这样就不会被地图层级压住,web端能实现的动画效果、渐变均可以比较容易实现。(不受限于高德地图,其他地图也是可以使用的)
针对第三种情况实现地图的方法如下:
方法一:新项目的话可以考虑使用webpack或者vue-cli,vue版本无所谓(打包工具不能是vite),直接写H5,打包好的dist文件夹然后再放到hbuider新建的项目中打包成app。(简单粗暴)
方法二: 现有老项目是uni的,已经无法调整,可以考虑使用web-view和renderjs的方式。
web-view其实是外部项目提供H5,和方法一方式相似。
renderjs的方式比较另类,能完成项目,待后续。。。