百度地图开发:调用jsAPI实现实时定位的解决方案及常见问题

简介: 百度地图开发:调用jsAPI实现实时定位的解决方案及常见问题

项目说明

  1. 建议使用异步加载,避免F12控制台出现阻塞等提示;
  2. 电脑使用浏览器定位时,由于没有GPS,会出现无法定位(fail8)等错误提示,属于正常;
  3. 手机端时候,尤其是华为系列(安卓系统)无法正常定位时,一般是因为没有使用https安全服务协议访问的,解决方案就是配置SSL证书;
  4. 定位无法实时展示,只能通过定位配置项进行设置(见下文);
  5. 对生活区(行政街道等)的定位相对精准,但是在荒山野岭时,定位的偏差会很大(无法用具体数字来描述)


异步加载地图

  /*百度地图经纬度选择插件*/
    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!

相关文章
|
6月前
|
开发工具 git 开发者
百度搜索:蓝易云【Git实际开发的流程】
以上是Git在实际开发中的一般流程。Git的分布式版本控制系统使得团队开发更加高效和灵活,并能有效管理项目的版本历史。
62 1
|
4月前
|
定位技术 开发者
百度地图开发 —— 获取百度地图开发的 AK
百度地图开发 —— 获取百度地图开发的 AK
337 3
|
4月前
|
JavaScript 定位技术
vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发
vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发
254 1
|
4月前
|
JavaScript 定位技术
vue 百度地图开发【教程】3. 自定义百度地图主题
vue 百度地图开发【教程】3. 自定义百度地图主题
165 0
|
4月前
|
JavaScript 定位技术
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
406 0
|
6月前
|
Android开发
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
|
6月前
|
前端开发 定位技术
百度地图开发如何自定义控件(无敌的解决办法)
百度地图开发如何自定义控件(无敌的解决办法)
59 0
百度地图开发如何自定义控件(无敌的解决办法)
|
6月前
|
存储 前端开发 Java
基于Springboot实现仿百度网盘开发
基于Springboot实现仿百度网盘开发
|
6月前
|
Ubuntu 数据库 C++
百度搜索:蓝易云【【嵌入式Qt开发入门】在Ubuntu下编写C++教程。】
请注意,这只是一个入门教程,Qt开发涉及到更广泛的主题和概念,例如信号与槽机制、界面设计、数据库操作等。建议参考Qt官方文档和教程,以深入了解和掌握嵌入式Qt开发。
172 0
|
Ubuntu NoSQL C++
百度搜索:蓝易云【搭建ubuntu容器内C/C++开发调试环境】
以上是搭建 Ubuntu 容器内 C/C++ 开发调试环境的一般教程。你可以根据实际需求进行进一步的定制和配置。请注意,使用容器进行开发调试可以提供一种隔离的环境,但也需要注意容器的资源限制和安全性。建议参考 Docker 官方文档和其他可靠资源,以获取更详细和特定于你的需求的指导。
54 1