百度地圖API,使用者拒絕獲取地理位置getStatus()還是等於BMAP_STATUS_SUCCESS
阿新 • • 發佈:2019-02-10
1、業務場景:百度地圖 JavaScript API中有一個方法是通過瀏覽器定位,getCurrentPosition。但是使用者拒絕或者允許獲取地理位置,this.getStatus()都是0;
- var myposition;
- var myposition_lng;
- var myposition_lat;
- var geolocation = new BMap.Geolocation();
- geolocation.getCurrentPosition(function(r){
-
if(this.getStatus() == BMAP_STATUS_SUCCESS){
- var mk = new BMap.Marker(r.point);
- map.addOverlay(mk);
- map.panTo(r.point);
- myposition_lat=r.point.lat;
- myposition_lng=r.point.lng;
- alert('accuracy:'+r.accuracy);
- myposition=new BMap.Point(r.point.lng,r.point.lat);
- }else {
-
alert('failed'
- }
- },{enableHighAccuracy: true})
2、因為當用戶拒絕該網站使用瀏覽器位置時,百度地圖會通過其他方式獲取大概位置,所以this.getStatus()都是0
3、解決辦法:當用戶拒絕該網站使用瀏覽器位置時,此時其精度則為null,通過此值判斷使用者是否拒絕網站獲取瀏覽器位置資訊
4、程式碼如下
- var myposition;
- var myposition_lng;
- var myposition_lat;
-
var geolocation = new
- geolocation.getCurrentPosition(function(r){
- if(this.getStatus() == BMAP_STATUS_SUCCESS){
- var mk = new BMap.Marker(r.point);
- map.addOverlay(mk);
- map.panTo(r.point);
- myposition_lat=r.point.lat;
- myposition_lng=r.point.lng;
- //alert('accuracy:'+r.accuracy);
- myposition=new BMap.Point(r.point.lng,r.point.lat);
- if(r.accuracy==null){
- alert('accuracy null:'+r.accuracy);
- //使用者決絕地理位置授權
- return;
- }
- //使用者允許地理位置授權
- }else {
- alert('failed'+this.getStatus());
- }
- },{enableHighAccuracy: true})