百度地图API,用户拒绝获取地理位置getStatus()还是等于BMAP_STATUS_SUCCESS

1、业务场景:百度地图 JavaScript API中有一个方法是通过浏览器定位,getCurrentPosition。但是用户拒绝或者允许获取地理位置,this.getStatus()都是0;

[java]  view plain  copy
  1. var myposition;  
  2.     var myposition_lng;  
  3.     var myposition_lat;  
  4.  var geolocation = new BMap.Geolocation();  
  5.   geolocation.getCurrentPosition(function(r){  
  6.     if(this.getStatus() == BMAP_STATUS_SUCCESS){  
  7.         var mk = new BMap.Marker(r.point);  
  8.         map.addOverlay(mk);  
  9.         map.panTo(r.point);  
  10.         myposition_lat=r.point.lat;  
  11.         myposition_lng=r.point.lng;  
  12.         alert('accuracy:'+r.accuracy);  
  13.         myposition=new BMap.Point(r.point.lng,r.point.lat);  
  14.     }else {  
  15.         alert('failed'+this.getStatus());  
  16.     }          
  17.   },{enableHighAccuracy: true})  



2、因为当用户拒绝该网站使用浏览器位置时,百度地图会通过其他方式获取大概位置,所以this.getStatus()都是0


3、解决办法:当用户拒绝该网站使用浏览器位置时,此时其精度则为null,通过此值判断用户是否拒绝网站获取浏览器位置信息




4、代码如下

[java]  view plain  copy
  1. var myposition;  
  2.     var myposition_lng;  
  3.     var myposition_lat;  
  4.  var geolocation = new BMap.Geolocation();  
  5.   geolocation.getCurrentPosition(function(r){  
  6.     if(this.getStatus() == BMAP_STATUS_SUCCESS){  
  7.         var mk = new BMap.Marker(r.point);  
  8.         map.addOverlay(mk);  
  9.         map.panTo(r.point);  
  10.         myposition_lat=r.point.lat;  
  11.         myposition_lng=r.point.lng;  
  12.         //alert('accuracy:'+r.accuracy);  
  13.         myposition=new BMap.Point(r.point.lng,r.point.lat);  
  14.         if(r.accuracy==null){  
  15.             alert('accuracy null:'+r.accuracy);  
  16.             //用户决绝地理位置授权  
  17.             return;  
  18.         }  
  19.         //用户允许地理位置授权  
  20.     }else {  
  21.         alert('failed'+this.getStatus());  
  22.     }          
  23.   },{enableHighAccuracy: true})  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值