移动端调用百度地图的时候,怎样可以获取到所点击的位置具体地名呢,(如xx餐厅),现在只能精确到街道

发布于 2022-09-04 08:24:37 字数 2712 浏览 15 评论 0

移动端调用百度地图的时候,怎样可以获取到所点击的位置具体地名呢,(如xx餐厅),现在只能精确到街道

var map = new BMap.Map("map-cont",{minZoom:5,maxZoom:30});    // 创建Map实例
        map.centerAndZoom(new BMap.Point(113.204, 22.239), 19);  // 初始化地图,设置中心点坐标和地图级别
        map.addControl(new BMap.MapTypeControl());   //添加地图类型控件
        map.setCurrentCity("珠海");          // 设置地图显示的城市 此项是必须设置的
        map.enableScrollWheelZoom(true);

        /*/*新增*/
        var geolocation = new BMap.Geolocation();
        var go_to=document.getElementById('pos');        
        go_to.style.display='none'    
        geolocation.getCurrentPosition(function(r){
            if(this.getStatus() == BMAP_STATUS_SUCCESS){
                var mk = new BMap.Marker(r.point);            
                map.addOverlay(mk);
                var pointA,pointB;
                pointA=new BMap.Point(r.point.lng+','+r.point.lat)
                var latCurrent=r.point.lat;
                var lngCurrent=r.point.lng;
                map.addEventListener('click',function(e){    
                     /*清空折线*/
                    map.clearOverlays()
                    go_to.style.display='block'    
                    pointB=new BMap.Point(e.point.lng,e.point.lat);
                    //获取两点距离,不保留小数点
                    var distance='距离'+(map.getDistance(pointA,pointB)).toFixed(0)+'米'
                    var marker = new BMap.Marker(pointB);// 创建标注                    
                    map.addOverlay(marker);   
                    /*获取当前城市信息*/
                    geocodeSearch(pointB,distance)
                    // (113.204072,22.239358)
                    console.log("22.240006,113.204373")                    
                    go_to.addEventListener('click',function(){
                             window.open("http://api.map.baidu.com/direction?origin="+latCurrent+","+lngCurrent+"&destination="+e.point.lat+","+e.point.lng+"&mode=driving&region=珠海&output=html",'_target')
                           
                    })
                })
            }else{
                alert('failed'+this.getStatus());
            }
            /*获取点击的地理信息*/
            function geocodeSearch(pt,distance) { 
                var myGeo = new BMap.Geocoder(); 
                myGeo.getLocation(pt, function (rs) { 
                    var addComp = rs.addressComponents; 
                    var pos=addComp.city+ addComp.district+addComp.street+addComp.streetNumber;
                    document.getElementById('pos-cot').innerHTML=pos; 
                    document.getElementById("meter").innerHTML=distance;                     
                });             
            } 
        },{enableHighAccuracy: true});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陈独秀 2022-09-11 08:24:37

百度能得到的所有数据都在rs.addressComponents中,你可以打印出来看看,如果rs.addressComponents中只有街道的话就没办法了,说明百度自己也查不到更精确的地址

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文