
微信小程序用户位置获取及授权设置方法总结一
一、微信小程序获取用户当前位置有四个方式:
1、 wx.getLocation(多与wx.openLocation一起用)
获取当前的精度、纬度、速度。需要授权。当type设置为gcj02 返回可用于wx.openLocation的坐标,且显示在map地图上的坐标要求的是gcj02标准才准确!!
注意:
wx.onLocationChange2、wx.openLocation(Object object)
使用微信内置地图查看位置,需要授权,使用微信内置地图查看位置。多半用于查看起点到终点的路线怎么走
应用场景
效果
3、wx.chooseLocation
需要授权,打开地图选择位置,选择完位置返回的位置信息,使用的是gcj02 国测局坐标系!!!
效果如下
二、授权方法有三种:
1. wx.getSetting
获取用户的当前设置,返回值中只会出现小程序已经向用户请求过的权限,类似下面的样子,获取的结果放在 res.authSetting 属性上
示例代码:
下面以获取位置为例
2. wx.openSetting
调起客户端小程序设置界面,返回用户设置的操作结果。设置界面只会出现小程序已经向用户请求过的权限,类似下面的样子
示例代码:
效果图
注意:
buttonwx.openSetting示例代码:
3. wx.authorize
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。更多用法详见 用户授权
示例代码:
效果图
关于授权这里就大概讲到这里,具体有关授权的详细讲解看官方文档
注意:
wx.authorize({scope: "scope.userInfo"})scope.userLocationscope.userLocationBackground示例代码
效果图
通过上面的讲解,下面是实际业务中的综合应用场景
假如第一次授权被拒绝,那么我们要怎么进行处理
思路:假如我第一次使用wx.getLocation()获取权限被拒绝,那么后面我再调用这个api的时候,不会再出现授权弹窗,会默认触发wx.getLocation()的fail方法 然后使用wx.getSetting(),那么我可以在fail方法里面,使用wx.getSetting(),这样就每次都能判断是否已经给与了权限了。
示例代码:
大概如下:具体应用再结合不同的业务进行修改


