您的位置:首页 > 移动开发 > 微信开发

微信公众号获取用户地址的坑

2017-07-01 00:00 99 查看
项目最近在做一个微信定位,然后获取用户所在城市(县),用户定位不同的用户,然后就去看微信公众号的说明文档,里面是的接口大概是这样写的

PS:在前面需要获取配置那些,在这里就不说了,这里主要讲这个接口

获取地理位置接口
wx.getLocation({
type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success: function (res) {
var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
var speed = res.speed; // 速度,以米/每秒计
var accuracy = res.accuracy; // 位置精度
}
});

很简单,这样就可以获取到经纬度了,但是只是经纬度啊,我们需要的是所在县,微信这边是没有办法提供的,那么我们就一下用到高德的接口,里面有一个根据经纬度获取附近POI的接口,



其实这个接口不太好,拿的数据太多,而且,并不是拿当前位置的,而是拿到了附近的poi数据,但是,我从web这个里面找不到合适的接口,所以无奈用了这个,但是

这个有一个问题,就是腾讯那边给的经纬度和高德的是不一样的,需要转换一下,这是第一个坑

还有我们有可能会出现一个情况,就是用户没有开启gps或者拒绝获取地址信息的时候,我们怎么知道(因为如果没获取到就要给用户自行选择)

第一个问题,很简单,高德有提供接口,第二个,就要认真读公众号的文档了,不得不说,腾讯的文档写的很不好,我找了很多地方才找到这个



最后的代码是这样的(里面用了一个ajax方法,是我们自己写的,就不详细说了,这里只是说一下思路),最后回调函数里面的第一个参数就是成功与否,第二个参数就是具体的地址信息了,后面需要怎么样,就看自己的业务逻辑了

/**
* --------------------------------------------------
* 获取当前位置的地理信息
* --------------------------------------------------
*
* @author dong
* @since  2017-06-15
*/
var wxLocationsCity = (cb) => {

ajaxGet('/location/index', {}, function(r) {

wx.config(r.wx.cfg);
wx.ready(function() {
wx.getLocation({
success: function(res) {
// 转高德
var wxLocations = res.longitude + ',' + res.latitude;
axios.get('http://restapi.amap.com/v3/assistant/coordinate/convert?locations=' + wxLocations + '&coordsys=gps&output=json&key=' + key).then(function(response) {
// 响应成功回调后拼接经纬度
var locations = response.data.locations;
axios.get('http://restapi.amap.com/v3/geocode/regeo?&location=' + locations + '&key=' + key + '&radius=1000&extensions=base&batch=false&roadlevel=0').then(function(response) {
// 响应成功回调
// 这里会把整个pois在callback里面执行
cb('succ', response.data.regeocode.addressComponent);
}, function(response) {
// 响应错误回调
cb('fail', response);
});
}, function(response) {
// 响应错误回调
cb('fail', response);
});

},
cancel: function(response) {
//('用户拒绝授权获取地理位置');
cb('fail', response);
},
fail: function(response) {
// 获取失败
cb('fail', response);
}
});
});
})
};

最后,其实这个功能并不复杂,但是我现在是需要在本地不断的调试,那么久需要用到不少的工具来帮助了,因为公众号只能对于正式的地址调用,这个就留个以后再说了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript