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,通过此值判断用户是否拒绝网站获取浏览器位置信息(通过判断返回的accuracy 是否为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);
//拒绝获取地理位置:accuracy 为 null ;同意: accuracy 不为 null
if (r.accuracy == null) { //用户拒绝地理位置授权
alert('accuracy null:' + r.accuracy);
return;
}
} else {//用户允许地理位置授权
alert('failed' + this.getStatus());
}
}, {
enableHighAccuracy: true
})
转载地址:https://blog.csdn.net/u014520797/article/details/56023658