- 当前 Bug 的表现(可附上截图)
getSetting 得到的 ['scope.userlocaion'] 为 undefined 或 true
然后执行 wx.getLocation 弹窗
点击允许(理想情况应该是执行 success)
但是执行的是 fail ,一开始还以为自己获取的 ['scope.userlocaion'] 不对,但是前面已经判断过值为 true 或 undefined 才会执行 wx.getLocation,既然弹窗就说明是 undefined 值,然后点击 允许,按理就应该执行 success 才对的。
然后去看了一下自己手机设置没有给微信获取地址。也就是说手机不给微信获取地址,即使用户给小程序获取地址,那么这个执行的也是 fail。
但是 wx.getLocation 只在值为 undefined 的之后弹窗继续执行,或者 true 的时候继续执行。 false 不再弹窗 更不能继续了。
那么我怎么区分 wx.getLocation 执行的 fail 的时候,是因为用户不允许小程序,还是用户手机不允许微信导致的?
然后 wx.getLocation 也不在弹窗了, fail 的时候,就莫名其妙了,用户点击允许但是你没有给我地址,
这时候如果再做个 wx.openSetting ,看起来合理,打开设置去设置授权,
但是如果用户点击 不允许,还跳出来就更莫名其妙了,都拒绝了,还叫我去授权?
看不懂这个逻辑,不知道怎么写了,好晕,
getLocation() { // 获取用户当前的授权状态。 wx.getSetting({ success: (res) => { // 用户是否授权地址 let locationScope = res.authSetting[ 'scope.userLocation' ] // 只能这样获取,不能res.authSetting.scope.userLocation 这样就是不存在的值 scope 报错 // res.authSetting['scope.userLocation'] 的可能是 true(已授权),false(拒绝过授权),undefined(还没有操作过) // true 与 false 不会再弹窗,undefined 会弹窗 if (locationScope == undefined || locationScope == true ) { this .getLocationApi() } else { // 就是 false 之前拒绝过不会弹窗了,要开发者自己加上弹窗,如果用户一直拒绝,自己还加上去会不好吧? /* wx.showModal({ title: '是否授权地理位置', content: `您的位置信息将用于收货地址填写与展示`, cancelText: '不允许', confirmText: '允许', success(res) { if (res.confirm) { console.log('用户点击确定') } else if (res.cancel) { console.log('用户点击取消') } } }) */ } } }) }, getLocationApi() { //wx.getLocation ,如果还没有操作过的话,会弹出窗口让用户允许或者允许才会执行 wx.getLocation({ type: 'wgs84' , success: (res) => { // 用户允许授权,并且获取定位成功 //2、根据坐标获取当前位置名称,显示在顶部:腾讯地图逆地址解析 qqmapsdk.reverseGeocoder({ location: { latitude: res.latitude, longitude: res.longitude }, success: (addressRes) => { console.log(addressRes, 'addressRes' ) console.log( '888888' ) let address = addressRes.result.formatted_addresses.recommend; console.log(address) this .setData({ currentAddr: address }) } }) //console.log(res, 'success') }, fail: (res) => { // 用户不允许授权
// 这里就很奇怪了,点击允许,但是给的却是 fail,再次提示去授权?但是如果是 点击不允许授权的话,再提示授权不是耍流氓么? //res={errmsg:"getLocation:fail auth deny"} wx.showToast({ title: '获取定位失败' , image: '../../img/warn.png' }) } }) }, |
这个问题有解决吗?
手机有开启定位功能吗?
没有开启?我想问的是,如果手机没有开启,但是用户点击允许了,却没有获取到地址,
貌似判断不了是 点击了不允许 fai 的还是 点击了允许但是手机不允许把?
错误信息不完整!我也是手机没有开启定位,使用 `wx.openLocation` 的时候,会提示手机没有开启定位权限