如何调用百度地图API实现手机自动定位
最近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的。我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位置。经过2天研究和咨询,找到了解决方案,在此备忘一下。
//声明地址解析器
vargeoc=newBMap.Geocoder();
//自动定位
varautoLocation=function(){
if(navigator.geolocation){//判断浏览器是否能获取当前位置
navigator.geolocation.getCurrentPosition(AddrSuc,AddrFail);
}
else{
simpleNoty("无法自动定位,请输入您的用餐地址");
}
}
//获取当前坐标成功
functionAddrSuc(param){
varlng=param.coords.longitude;
varlat=param.coords.latitude;
varpoint=newBMap.Point(lng,lat);
//将gps坐标转换为百度地址坐标
BMap.Convertor.translate(point,0,translateCallback);
}
//获取坐标失败
functionAddrFail(err){
showNotify("自动定位失败");
}
//坐标转换
functiontranslateCallback(point){
geoc.getLocation(point,function(rs){
varaddComp=rs.addressComponents;//查询得到的地址对象组件
//addComp.streetNumber:街道门牌号
//addComp.city:城市
//addComp.district:区
//addComp.street:街道
//addComp.province:省
varaddress=addComp.city+addComp.district+addComp.street;
varlng_t=point.lng;//经度
varlat_t=point.lat;//纬度
$(".locationTxt").text("当前位置:"+address);
})
}
对象示例:
rs对象:{point:H,address:"北京市朝阳区广顺北大街",addressComponents:Object,surroundingPois:Array[0],business:"望京,来广营,花家地"}
addressComponents对象:{streetNumber:"",street:"广顺北大街",district:"朝阳区",city:"北京市",province:"北京市"}
调用:
$(function(){
aotuLocation();
});<br><br>