项目说明
- 建议使用异步加载,避免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!