移动端调用百度地图的时候,怎样可以获取到所点击的位置具体地名呢,(如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®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});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
百度能得到的所有数据都在rs.addressComponents中,你可以打印出来看看,如果rs.addressComponents中只有街道的话就没办法了,说明百度自己也查不到更精确的地址