最近做一个公众号页面开发,需要获取用户地理位置信息,获取到经纬度后,找了很多地方都没找到腾讯地图将经纬度转换成具体位置的方法,所以就只能调用百度地图api转一次,现在将其中部分代码贴在上面,以便下次使用:
首先需要去百度api申请秘钥,链接:获取百度api秘钥
$.ajax({
method:"GET",
url:url,//替换网址,xxx根据自己jssdk文件位置修改
success:function(res) {
alert(res.code);
if(res.code==200){
//将签名转换为utf-8
wx.config({
debug:true,//调式模式,设置为ture后会直接在网页上弹出调试信息,用于排查问题
appId:res.data.appId,
timestamp:res.data.timestamp,
nonceStr:res.data.nonceStr,
signature:res.data.signature,
jsApiList: [//所有要调用的API都要加到这个列表中
'checkJsApi',
'openLocation',
'getLocation'
]
});
wx.ready(function() {
wx.checkJsApi({
jsApiList: [
'getLocation'
],
success:function(res) {
// alert(JSON.stringify(res));
// alert(JSON.stringify(res.checkResult.getLocation));
if(res.checkResult.getLocation==false) {
alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!');
return;
}
}
});
wx.getLocation({
success:function(res) {
varlatitude=res.latitude;//纬度,浮点数,范围为90 ~ -90
varlongitude=res.longitude;//经度,浮点数,范围为180 ~ -180。
varspeed=res.speed;//速度,以米/每秒计
varaccuracy=res.accuracy;//位置精度
varlocation=latitude+','+longitude;
getBaiduLocation(longitude,latitude);
getAddrs(location);
//转换百度坐标
functiongetBaiduLocation(longitude,latitude) {
$.ajax({
type:"GET",
url:'http://api.map.baidu.com/geoconv/v1/?coords='+longitude+','+latitude+'&from=1&to=5&output=json&ak= 你的百度ak ',
dataType:'jsonp',
success:function(msg) {
try{
varresult=msg.result;
varlat=result[0].y;//纬度
varlng=result[0].x;//经度
navi(result[0]);//导航
}catch(e) {
alert(e.message);
}
}
});
};
//调用百度地图api执行地址逆编码
functiongetAddrs(jwd) {
$.ajax({
type:"GET",
url:'http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location='+jwd+'&output=json&pois=1&ak=你的百度ak',
dataType:'jsonp',
success:function(msg) {
//获取地址成功后的回调,我这里只需要获取省市区信息
if(msg.status==0){
varprovMsg=msg.result.addressComponent.province;
varcityMsg=msg.result.addressComponent.city;
varareaMsg=msg.result.addressComponent.district;
varpca=provMsg+'-'+cityMsg+'-'+areaMsg;
}
}
})
}
},
cancel:function(res) {
alert('用户拒绝授权获取地理位置');
}
});
});
wx.error(function(res) {
alert(res.errMsg);//打印错误消息。及把debug:false,设置为debug:ture就可以直接在网页上看到弹出的错误提示
});
}
}
});