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

移动端调用百度地图的时候,怎样可以获取到所点击的位置具体地名呢,(如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});
阅读 5.4k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题