//自动定位获取当前信息
function handler() {
map.clearOverlays();
// 获取自动定位方法
var geolocation = new BMap.Geolocation();
var gc = new BMap.Geocoder(); //创建地理编码器
// 开启SDK辅助定位
geolocation.enableSDKLocation();
// 获取自动定位获取的坐标信息
geolocation.getCurrentPosition(
function(r) {
if (this.getStatus() == BMAP_STATUS_SUCCESS) {
var mk = new BMap.Marker(r.point);
map.addOverlay(mk);
map.panTo(r.point);
var pt = r.point;
console.log('您的位置:' + r.point.lng + ',' + r.point.lat);
gc.getLocation(pt, function(rs) {
var addComp = rs.addressComponents;
var div2 = document.createElement("div");
div2.innerHTML = '您的位置:' + JSON.stringify(addComp.province + addComp.city + addComp.district + addComp.street +
addComp.streetNumber) + '<br/>' + r.point.lng + ',' + r.point.lat;
document.getElementById('json').appendChild(div2);
});
} else {
alert('failed' + this.getStatus());
}
}, {
enableHighAccuracy: true,
timeout: 100000,
maximumAge: 0,
SDKLocation: true
}
);
};
realTimeClData = setInterval(handler, 10000);
百度js sdk实际调用的还是h5的geolocation.getCurrentPosition来实现定位。geolocation对象有个watchPosition来实现定位监控的
题主试试用原生js的geolocation.watchPosition监控试试(注意不需要setInterval)
然后调用百度的Geocoder getLocation反向解析下
timeout: 100000,
把这个数值设置小一点