直接上代码
async getLocationF() {
// 获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。
const scope = await wx.p.getSetting()
// 判断权限
if (scope.authSetting['scope.userLocation'] == undefined) {
// **如果用户没有设置过该(地理位置)授权**
// 直接调用对应的api则会在本页面设置是否授权;如果允许,则会在api调用成功后打印数据
const location = await wx.p.getLocation()
console.log(location, '1')
} else if (scope.authSetting['scope.userLocation']) {
// **已经授权**
// 调用对应api成功后直接打印数据
const location = await wx.p.getLocation()
console.log(location, '2')
} else {
// **不授权**
// 调起客户端小程序设置界面,设置界面只会出现小程序已经向用户请求过的权限
const setting = await wx.p.openSetting()
// 返回用户设置的操作结果,判断这次设置是否授权
if (setting.authSetting['scope.userLocation']) {
// 如果授权,则直接调用对应api成功后会打印数据
const location = await wx.p.getLocation()
console.log(location, '3')
} else {
console.log('请先授权')
}
}
}
图文说明:调用 wx.p.getSetting(),通过返回值判断会用3种情况
情况1:从来没有设置过该授权
- 调用
wx.p.getSetting()会拉起 - 点击
允许api调用成功后会拿到相关数据
情况2:拒绝授权
拒绝授权后,再想直接获取数据是不行的,需要调用wx.p.openSetting()去设置页面设置授权
允许授权后,调用wx.p.getSetting()成功后会直接打印相关数据
情况3:已经允许授权
- 则调用
wx.p.getSetting()则会在成功后直接获取到相关数据,不需要再次操作授权,所有以下页面不会再有,而是直接拿到数据
相关api说明
| 名称 | 简单描述 | 用法参考 |
|---|---|---|
| wx.getLocation() | 获取当前的地理位置、速度 | [ wx.getLocation(Object object)] |
| wx.getSetting() | 获取用户的当前设置 | [wx.getSetting(Object object)] |
| wx.openSetting() | 调起客户端小程序设置界面 | [wx.openSetting(Object object)] |