javascript - 移动端调用百度地图的时候,怎样可以获取到所点击的位置具体地名呢,(如xx餐厅),现在只能精确到街道
天蓬老师
天蓬老师 2017-04-11 10:50:16
[JavaScript讨论组]

移动端调用百度地图的时候,怎样可以获取到所点击的位置具体地名呢,(如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®ion=珠海&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});
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
迷茫

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号