小程序授权地理位置的几种情况

862 阅读1分钟

如何弹起授权框

wx.authorize({            
    scope: 'scope.userLocation',            
    success: (res) => {              
    if(res.errMsg == 'authorize:ok') {                
        .............
    }            
}, fail: (res) => {              
    console.log('失败:', res)              
    ............            
    },          
})

查询授权记录的几种情况

主要用下面这个函数来判断:
wx.getSetting({      
    success: (res) => { 
        if(res.authSetting["scope.userLocation"] === xxx) {}    }
})

1. 有权限询问记录 但没有允许开启授权

res.authSetting["scope.userLocation"] === false

// 此时如果希望引导至设置页面开启或关闭位置权限,可以执行以下代码:

wx.showModal({            
      title: '提示:位置权限暂未开启',            
      confirmText: '去设置',            
      showCancel: true,
      content: "需要授权位置信息",
      success: function (res) {
            if (res.confirm) { // 用户同意打开授权设置页面
                    // 打开权限设置页面
                    wx.openSetting({
                      success(res) {
                        // 进行地理位置授权完成后的逻辑操作
                        ......
                      }
                    })
                  } else if (res.cancel) {//用户拒绝打开授权设置页面
                    wx.showToast({
                      title: '授权失败',
                      icon: 'none',
                      duration: 2000
                    })
                  }
                }
              })

2. 有权限询问记录 且当前已开启授权

res.authSetting["scope.userLocation"] === true

// 此时可以直接读取本地地理位置
// wgs84坐标系也可以自己转为百度坐标系/火星坐标系等等
wx.getLocation({      type: "wgs84",      success (res) {        let lng = res.longitude;        let lat = res.latitude;      }
})

3. 没有授权记录 需要第一次授权

res.authSetting["scope.userLocation"]既不是true也不是false的时候

// 第一次授权 和本文第一种情况一样
wx.authorize({
     scope: 'scope.userLocation',
     success: (res) => {
          if(res.errMsg == 'authorize:ok') { // 授权成功
               ......
          }
     }, fail: (res) => {
     })