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

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





阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭