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' + this .getStatus()); } },{enableHighAccuracy: true })
2、因为当用户拒绝该网站使用浏览器位置时,百度地图会通过其他方式获取大概位置,所以this.getStatus()都是0
3、解决办法:当用户拒绝该网站使用浏览器位置时, 此时其精度则为null,通过此值判断用户是否拒绝网站获取浏览器位置信息
4、代码如下
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; 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 })