- 建议使用异步加载,避免F12控制台出现阻塞等提示;
- 电脑使用浏览器定位时,由于没有GPS,会出现无法定位(fail8)等错误提示,属于正常;
- 手机端时候,尤其是华为系列(安卓系统)无法正常定位时,一般是因为没有使用https安全服务协议访问的,解决方案就是配置SSL证书;
- 定位无法实时展示,只能通过定位配置项进行设置(见下文);
- 对生活区(行政街道等)的定位相对精准,但是在荒山野岭时,定位的偏差会很大(无法用具体数字来描述)
/*百度地图经纬度选择插件*/
function map_load() {
var load = document.createElement("script");
load.src = "//api.map.baidu.com/api?v=3.0&ak="+bdKey+"&callback=map_init";
document.body.appendChild(load);
}
window.onload = map_load;
//初始化地图;
var map;
function map_init() {
map = new BMap.Map("map", {enableMapClick: false});
var point = new BMap.Point(centerCords.split(",")[0], centerCords.split(",")[1]);
map.centerAndZoom(point, 13);
map.enableScrollWheelZoom();
// 添加定位控件;
var geolocationControl = new BMap.GeolocationControl();
map.addControl(geolocationControl);
//自动定位;
function bdGeo() {
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function (r) {
if (this.getStatus() == BMAP_STATUS_SUCCESS) {
//var mk = new BMap.Marker(r.point);
map.clearOverlays();
map.panTo(r.point);
//console.log(r.address);
$("#L_poi_province").val(r.address.province);
$("#L_poi_city").val(r.address.city);
$("#L_poi_county").val(r.address.district);
$("#L_lnglat").val(r.point.lng+","+r.point.lat);
var points=new BMap.Point(r.point.lng, r.point.lat);
//返回当前中心点;
map.centerAndZoom(points, 16);
//添加标注;
var marker = new BMap.Marker(points);
map.addOverlay(marker);
marker.enableDragging();
marker.addEventListener('dragend', function () {
//console.log(marker.getPosition());
$("#L_lnglat").val(marker.getPosition().lng+","+marker.getPosition().lat)
})
}
else {
alert('failed' + this.getStatus());
}
},function (error) {
console.log(error);
},{
enableHighAccuracy: true,//是否要求高精度的地理位置信息
timeout: 1000,//对地理位置信息的获取操作做超时限制,如果再该事件内未获取到地理位置信息,将返回错误
maximumAge:0//设置缓存有效时间,在该时间段内,获取的地理位置信息还是设置此时间段之前的那次获得的信息,超过这段时间缓存的位置信息会被废弃
});
}
bdGeo();
定位配置项
{
enableHighAccuracy: true,//是否要求高精度的地理位置信息
timeout: 1000,//对地理位置信息的获取操作做超时限制,如果再该事件内未获取到地理位置信息,将返回错误
maximumAge:0//设置缓存有效时间,在该时间段内,获取的地理位置信息还是设置此时间段之前的那次获得的信息,超过这段时间缓存的位置信息会被废弃
}
lockdatav Done!