微信小程序-地理授权-获取经纬度-权限相关 流程总结

想要获取当前位置,大前提:1、微信允许访问位置信息,2、手机定位开启
所以,我们进入小程序时,要获取位置,需要考虑权限问题。
怎样才能在每次进入都获取,并且大部分用户进入 执行的代码更少?怎样避免每次每人都执行所有的代码?

考虑:
1、既然每次都要获取经纬度,那么获取位置方法必须。同时,老用户,绝大部分情况是微信授权过的,至于新用户,反正都是得执行一遍。所以,我进入后直接获取位置经纬度。
2、如果获取经纬度失败,那么有两种情况,一个是微信位置没有授权,一个是定位没开。
我这里,优先判断微信位置授权,siteAuthoriza 标识授权,初始化为null,通过 微信 getSetting方法校验权限之后 赋值 true 或 false分别标识允许否。siteAuthoriza一旦不等于null,代表已经校验过权限了。

在这里插入图片描述

  • 先获取经纬度
getUserLocation() {
    const that = this
    wx.getLocation({
        type: 'wgs84',
        success(res) {
            console.log('res----获取到了经纬度', res)
            ...
        },
        fail(error) {
            console.log(error, '----------error------------')
            // 失败 大部分两种情况
            // 1、微信授权成功后调用此方法 siteAuthoriza 标识微信地址授权 true  但是 手机定位没打开
            // 2 微信地址授权拒绝,或者拒绝过。若拒绝过短期内不会出弹窗
            if (that.data.siteAuthoriza === true) {  
                that.openPhoneSetting() // 去打开手机设置 用户手动
            } else { // 校验微信授权
                that.getAuthorizaInfo(1)
            }
        }
    })
}
  • 获取位置失败,校验微信授权
    (这个授权校验方法,两个地方会调用,1、获取位置经纬度失败 2、进入微信授权页之后返回当前页-onShow)
// noPhoneSite  值 1 标识 获取经纬度失败时调用 无值或值null标识 从微信授权页返回调用校验
getAuthorizaInfo(noPhoneSite) {
    //查看设置是否允许获取地理位置
    const that = this
    wx.getSetting({
        success(res) {
            if (!res.authSetting['scope.userLocation']) {
                //已拒绝授权--显示授权弹出层 点击 手动打开微信设置
                 this.setData({
	                siteAuthoriza: false
	            })
	            // 可以是弹窗或其他,需用户手动触发
	            ...
            } else {
                //已授权啦
                that.setData({
                    siteAuthoriza: true // 标识微信授权过了
                })
                if (noPhoneSite) {// 已授权 但获取位置失败 需手动打开手机定位
                    that.openPhoneSetting() // 弹窗提示打开手机定位
                    return
                }
                // 微信授权后 校验确实授权过,重新获取微信信息
                that.getUserLocation()
            }
        }
    })
},
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值