用百度地图api获取用户的当前位置只有edge位置比较准确

用百度地图api获取用户的当前位置只有edge位置比较准确 chrome fierfox 2345 360浏览器偏差啊太大是怎么回事

使用百度api获取当前地理位置然后解码获取 省 市 区 街道

 
 
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <title></title>
        <script src="http://code.jquery.com/jquery-3.0.0.min.js"></script>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&s=1&ak=-----"></script>
    </head>
    <body>
        <div>  
                <span id="load_geolocation">点击获取位置</span>  
            </div>          
    </body>
    <script type="text/javascript">
    $(function(){  
 
         $("#load_geolocation").text("正在获取位置......");  
            //创建百度地图控件  
            var geolocation = new BMap.Geolocation(); 
                // 开启SDK辅助定位
                 geolocation.enableSDKLocation();
            geolocation.getCurrentPosition(function(r){  
                if(this.getStatus() == BMAP_STATUS_SUCCESS){  
                    //以指定的经度与纬度创建一个坐标点  
                    var pt = new BMap.Point(r.point.lng,r.point.lat);  
                    alert(r.point.lng);
                    alert(r.point.lat);
                    //创建一个地理位置解析器  
                    var geoc = new BMap.Geocoder();  
                    geoc.getLocation(pt, function(rs){//解析格式:城市,区县,街道  
                        var addComp = rs.addressComponents;  
                        $("#load_geolocation").text(addComp.province+","+ addComp.city + ", " + addComp.district + ", " + addComp.street);  
                    });      
                }  
                else {  
                    $("#load_geolocation").text('定位失败');  
                }          
            },{enableHighAccuracy: true})//指示浏览器获取高精度的位置,默认false 
    });
    </script>
</html>

阅读 2k
1 个回答

image.png
应该是edge对于本地环境默认使用的https协议,测试了下,对于发布后的http协议edge定位也不是准确的,但是本地机环境是准确的

无论是高德地图还是百度地图的定位现在都需要使用更安全的https协议才能准确的定位,这是因为浏览器的限制

定位有三层,首先是比较准确的浏览器定位,优先调用浏览器H5定位接口,但是需要https协议。浏览器定位后会使用IP定位,这个定位是城市级别的,会定位到城市中心,不是绝对的城市地图边界中心,差不多是市政府的位置,比如上面的龙奥南路

第三层是移动端的SDK辅助定位,这和pc端无关了

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题