小程序
小游戏
企业微信
微信支付
扫描小程序码分享
因业务要求,每次打开首页要获取一次wx.getLocation(),然后拿到经纬度去查询附近的充电站,并不需要持续获取定位.
但是我现在有个判断就是,如果首次没有权限,那么我需要在权限弹框后再次获取getLocation,但是这样写的话,上传到正式环境,就提示需要申请:wx.onLocationChange权限.
但是以真实业务去提交申请又无法审核通过,很麻,希望官网大佬能帮忙排查一下.
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
function positioning() { return new Promise((resolve, reject) => { var that = this uni.getSetting({ success(res) { if (!res.authSetting['scope.userLocation']) { uni.authorize({ scope: 'scope.userLocation', success() { uni.getLocation({ type: 'wgs84', success: function(data) { console.log("定位地址:",data) data.longitude = parseFloat(data.longitude) data.latitude = parseFloat(data.latitude) resolve(data); // console.log('当前位置的经度:' + data.longitude, '当前位置的纬度:' + data.latitude) }, fail() { uni.showToast({ title: "定位失败!", icon: "error" }) reject(); } }) }, fail() { uni.hideLoading() uni.showModal({ title: '授权提示', content: '获取权限失败,需要获取您的地理位置才能为您提供更好的服务!是否授权获取地理位置?', confirmText: "前往设置", success: function(res) { if (res.confirm) { uni.openSetting({ success() { uni.authorize({ scope: 'scope.userLocation', success() { uni.getLocation({ type: 'wgs84', success: function( data ) { resolve ( data ); // console.log('当前位置的经度:' + data.longitude, '当前位置的纬度:' + data.latitude) }, fail() { uni.showToast({ title: "定位失败!", icon: "error" }) reject (); } }) }, fail() { reject(); } }) } }) } else if (res.cancel) { uni.showToast({ title: "用户授权失败!", icon: "error" }) reject(); } } }); } }) } else { uni.getLocation({ type: 'wgs84', success: function(data) { resolve(data); // console.log('当前位置的经度:' + data.longitude, '当前位置的纬度:' + data.latitude) }, fail(e) { uni.showToast({ title: "定位失败!", icon: "error" }) reject(); } }) } }, fail(err) { uni.showToast({ title: "定位错误", icon: "error" }) reject(); } }) }) }
uni改成wx,第一次拒绝后弹窗让用户手动去授权,授权完成后默认在查询一次是否成功授权,如果用户一直拒绝,每次进来都提示弹窗让他授权无需使用onLocationChange
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
把你代码中的wx.onLocationChange删除掉就不会有这个提示了
确定没用到onLocationChange的话,忽略也行
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
function positioning() { return new Promise((resolve, reject) => { var that = this uni.getSetting({ success(res) { if (!res.authSetting['scope.userLocation']) { uni.authorize({ scope: 'scope.userLocation', success() { uni.getLocation({ type: 'wgs84', success: function(data) { console.log("定位地址:",data) data.longitude = parseFloat(data.longitude) data.latitude = parseFloat(data.latitude) resolve(data); // console.log('当前位置的经度:' + data.longitude, '当前位置的纬度:' + data.latitude) }, fail() { uni.showToast({ title: "定位失败!", icon: "error" }) reject(); } }) }, fail() { uni.hideLoading() uni.showModal({ title: '授权提示', content: '获取权限失败,需要获取您的地理位置才能为您提供更好的服务!是否授权获取地理位置?', confirmText: "前往设置", success: function(res) { if (res.confirm) { uni.openSetting({ success() { uni.authorize({ scope: 'scope.userLocation', success() { uni.getLocation({ type: 'wgs84', success: function( data ) { resolve ( data ); // console.log('当前位置的经度:' + data.longitude, '当前位置的纬度:' + data.latitude) }, fail() { uni.showToast({ title: "定位失败!", icon: "error" }) reject (); } }) }, fail() { reject(); } }) } }) } else if (res.cancel) { uni.showToast({ title: "用户授权失败!", icon: "error" }) reject(); } } }); } }) } else { uni.getLocation({ type: 'wgs84', success: function(data) { resolve(data); // console.log('当前位置的经度:' + data.longitude, '当前位置的纬度:' + data.latitude) }, fail(e) { uni.showToast({ title: "定位失败!", icon: "error" }) reject(); } }) } }, fail(err) { uni.showToast({ title: "定位错误", icon: "error" }) reject(); } }) }) }
uni改成wx,第一次拒绝后弹窗让用户手动去授权,授权完成后默认在查询一次是否成功授权,如果用户一直拒绝,每次进来都提示弹窗让他授权无需使用onLocationChange
把你代码中的wx.onLocationChange删除掉就不会有这个提示了
确定没用到onLocationChange的话,忽略也行