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