今天需要用到根据经纬度获取用户地理位置信息的接口 ,因为微信公众平台根本就没提供根据经纬度获取用户地理位置的接口,所以需要用到 百度的 geocoder接口 。调用方式为 ajax调用。发现没有返回值,原来ajax调用百度接口涉及到跨域问题 ,所以只需要设置 dataType:"JSONP" 就可以了。
付上我的解决方案
$(document).ready(function(){
var ak = "xxxxxxxxxx";
wx.config({
debug: false,
appId: "xxxx",
timestamp: "xxxx",
nonceStr: "xxxxx",
signature: "xxxxx",
jsApiList: [
'checkJsApi',
'openLocation',
'getLocation',
]
});
wx.ready(function () {
//获取用户位置
wx.getLocation({
type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success: function (res) {
var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
$.ajax({
url: 'https://api.map.baidu.com/geocoder/v2/?ak=xxxxxx&location='+latitude+','+longitude+'&output=json',
type: "get",
contentType : "application/json",
dataType:"JSONP",
async : false,
success: function(msg){
$("#province").val(msg.result.addressComponent.province);
$("#city").val(msg.result.addressComponent.city);
$("#district").val(msg.result.addressComponent.district);
$("#street").val(msg.result.addressComponent.street);
}
});
},
cancel:function(){
alert('1112');
}
});
});
});