vue之 IOS苹果自动定位问题 vue-baidu-map首次进入无法定位问题

   最近在用vue开发应用,要用到百度地图,基本功能都有实现过,但是到vue上用的一个vue-baidu-map封装组件,官网:https://dafrok.github.io/vue-baidu-map/#/zh/index,点击进去就是使用文档,但是有很多坑,需要自己去碰坑,填坑,用坑了

//百度地图

import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap, {
  // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
  ak: '你的key'
})

当然我只用到了这些,所以就只引入这些,其他的要使用的可以对照文档引入使用

<baidu-map class="map" @ready="handler" @load="mapLoad">
     <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true"></bm-geolocation>
</baidu-map>

你对地图进行事件处理,必须要在ready事件之后,否者取不到BMap对象的(mapAK是百度key)

handler方法会传入两个对象,使用过JS SDK的人应该知道,对,传入的参数就是对应的JS sdk里面的对象,直接拿来直接使用,虽然插件有提供标签,但是对应的属性和方法太少了,所以还是通过SDK提供的方法来调用比较好,

但是现在这些在安卓电脑上都没有问题苹果7却出现了进去以后获取不到的问题,经过查找发现getCurrentPosition的问题,我们去试这打印这个函数发现苹果7下的getCurrentPosition无法获取

geolocation.SW//首次进入此值不会存在

,但是我们切换页面回来发现这个方法就能正常使用了,但是你总不能告诉用户你切换一下就能用,所以在百般实验的情况下发现,偶然间发现在对这个方法去判断首次进入就能正常使用,看着这个鸡肋的代码有种想哭的冲动!因为你不能把下面的getCurrentPosition(function(r) {})函数放到那个判断里面去,入坑结束。

 if(geolocation.getCurrentPosition()){
  console.log('function')
 }else{
  console.log('function2')
 }

//代码如下

handler({BMap,map}) {
    this.$loading.show('');
    let that = this;
    var geolocation = new BMap.Geolocation();
    console.log(geolocation.SW)
    if(geolocation.getCurrentPosition()){
        console.log('function')
    }else{
        console.log('function2')
    }
    
    geolocation.getCurrentPosition(function(r) {
    console.log('当前定位参数:', r);
    console.log(map)
    if(this.getStatus() == BMAP_STATUS_SUCCESS){//定位正确逻辑
        var mk = new BMap.Marker(r.point);
        console.log(r.point)
        console.log(mk)
        map.addOverlay(mk);
        map.panTo(r.point);
        //逻辑代码
    }else{
            //定位错误逻辑
    }
     
    },{
    enableHighAccuracy: true
    })
},

以上结果在最终的时候还是会有问题然后做了最后的尝试

var geolocation = new BMap.Geolocation();
// 开启SDK辅助定位
geolocation.enableSDKLocation();
geolocation.getCurrentPosition(function(r){
	if(this.getStatus() == BMAP_STATUS_SUCCESS){
		var mk = new BMap.Marker(r.point);
		map.addOverlay(mk);
		map.panTo(r.point);
		alert('您的位置:'+r.point.lng+','+r.point.lat);
	}
	else {
		alert('failed'+this.getStatus());
	}        
});

解决了ios进入定位失效的问题 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值