1. 程式人生 > >百度地圖API,使用者拒絕獲取地理位置getStatus()還是等於BMAP_STATUS_SUCCESS

百度地圖API,使用者拒絕獲取地理位置getStatus()還是等於BMAP_STATUS_SUCCESS

1、業務場景:百度地圖 JavaScript API中有一個方法是通過瀏覽器定位,getCurrentPosition。但是使用者拒絕或者允許獲取地理位置,this.getStatus()都是0;

  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、程式碼如下

  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})