1.在页面添加 JS API 的入口脚本标签
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script>
官方示例
2.地图初始化(展示基础地图) - 第一步完成后本地就可以识别AMap指令了
this.map = new AMap.Map('container', {
zoom:11,//级别
center: [116.397428, 39.90923],//中心点坐标
viewMode:'3D'//使用3D视图
});
官方示例
this.map 我是本地组件使用靠mixins混入,一般var或let就可以单页面应用了
3.开始挖坑(IOS/安卓获取用户位置) - IOS11版本以上需要额外配置(现在基本上都是IOS11了吧~)
new AMap.Geolocation({
enableHighAccuracy: true, //是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:无穷大
maximumAge: 0, //定位结果缓存0毫秒,默认:0
convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
showButton: true, //显示定位按钮,默认:true
buttonPosition: 'LB', //定位按钮停靠位置,默认:'LB',左下角
buttonOffset: new AMap.Pixel(0, 0), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
zoomToAccuracy: true //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
}).getCurrentPosition((status, result) => {
// 用户经纬度 userPoint博主为了方便混入使用,可以根据自己需求接收
if (status == 'complete') this.userPoint = result;
if (status == 'error') this.$toast('获取用户经纬度失败')
});
官方示例
看似很美好,然后IOS11以上用户会发现,怎么没有获取到用户信息直接error了???(刷新后其实也获取到了,但是用户体验太差了吧) 高德官方有解释但是不明显我给大家搞出来~!(cv就完事了)
首先找到你的index.html页面 和 第一步一样引入
<script type="text/javascript" src="./remogeo.js"></script>
script 里执行一下
if (AMap.UA.ios) {
var remoGeo = new RemoGeoLocation();
navigator.geolocation.getCurrentPosition = function () {
return remoGeo.getCurrentPosition.apply(remoGeo, arguments);
};
navigator.geolocation.watchPosition = function () {
return remoGeo.watchPosition.apply(remoGeo, arguments);
};
}
remogeo.js 推荐放在本地,下他!!下他!!!
4.高德地图的H5跳转APP SCHEME
IOS: iosamap://path?sourceApplication=applicationName&slat=起点纬度&slon=起点经度&sname=起点名称&dlat=终点纬度&dlon=终点经度&dname=终点名称&dev=0&t=2
Android: amapuri://route/plan/?slat=起点纬度&slon=起点经度&sname=起点名称&dlat=终点纬度&dlon=终点经度&dname=终点名称&dev=0&t=2
5.提供一下H5本地未安装APP我的解决方案
监听当前页面是否隐藏,打开了APP自然就隐藏了,取消定时任务
document.addEventListener('visibilitychange', () => {
clearTimeout(this.time)
})
定时任务:多少时间内没有打开APP默认未安装(弹窗提示安装)
this.time = setTimeout(() => {
// 弹窗(去下载)
if(true){
window.location.href = '当前下载APP地址/需要根据环境判断'
}
},2000) // 定时时间(我的需求设置了2S)
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!