微信公众号获取用户地址的坑
2017-07-01 00:00
99 查看
项目最近在做一个微信定位,然后获取用户所在城市(县),用户定位不同的用户,然后就去看微信公众号的说明文档,里面是的接口大概是这样写的
PS:在前面需要获取配置那些,在这里就不说了,这里主要讲这个接口
很简单,这样就可以获取到经纬度了,但是只是经纬度啊,我们需要的是所在县,微信这边是没有办法提供的,那么我们就一下用到高德的接口,里面有一个根据经纬度获取附近POI的接口,
其实这个接口不太好,拿的数据太多,而且,并不是拿当前位置的,而是拿到了附近的poi数据,但是,我从web这个里面找不到合适的接口,所以无奈用了这个,但是
这个有一个问题,就是腾讯那边给的经纬度和高德的是不一样的,需要转换一下,这是第一个坑
还有我们有可能会出现一个情况,就是用户没有开启gps或者拒绝获取地址信息的时候,我们怎么知道(因为如果没获取到就要给用户自行选择)
第一个问题,很简单,高德有提供接口,第二个,就要认真读公众号的文档了,不得不说,腾讯的文档写的很不好,我找了很多地方才找到这个
最后的代码是这样的(里面用了一个ajax方法,是我们自己写的,就不详细说了,这里只是说一下思路),最后回调函数里面的第一个参数就是成功与否,第二个参数就是具体的地址信息了,后面需要怎么样,就看自己的业务逻辑了
最后,其实这个功能并不复杂,但是我现在是需要在本地不断的调试,那么久需要用到不少的工具来帮助了,因为公众号只能对于正式的地址调用,这个就留个以后再说了
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); } }); }); }) };
最后,其实这个功能并不复杂,但是我现在是需要在本地不断的调试,那么久需要用到不少的工具来帮助了,因为公众号只能对于正式的地址调用,这个就留个以后再说了
相关文章推荐
- python django 获取用户IP地址的方法
- 微信公众号开发之获取用户基本信息
- 微信公众号获取用户的openid
- 获取用户IP地址的三个属性的区别(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
- 获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)
- 获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)
- 服务器如何获取客户端用户的(城市)地址[获得真实IP再获得城市]
- 微信公众号网页授权获取用户基本信息
- 获取用户IP地址的三个属性的区别(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
- 微信公众号开发之获取微信用户的openID
- 微信公众号开发-微信网页授权获取用户openid以及用户信息的步骤
- 微信公众号开发--获取用户信息中文乱码的解决方案
- 微信公众号开发(四)--微信网页授权,获取用户信息
- IPUtil类---获取登录用户IP地址
- 获取用户IP地址的三个属性的区别(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
- (微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆)http://blog.csdn.net/liaohaojian/article/details/70175835
- Java微信公众号开发:网页授权获取用户基本信息
- php开发微信支付获取用户地址
- 微信公众号开发——网页授权 (页面分享 、获取用户基本信息)
- 获取用户IP地址的三个属性的区别(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)