收藏
回答

首次使用getLocation,如没有权限,则需获取权限后再次getLocation,具体如内容?

因业务要求,每次打开首页要获取一次wx.getLocation(),然后拿到经纬度去查询附近的充电站,并不需要持续获取定位.

但是我现在有个判断就是,如果首次没有权限,那么我需要在权限弹框后再次获取getLocation,但是这样写的话,上传到正式环境,就提示需要申请:wx.onLocationChange权限.

但是以真实业务去提交申请又无法审核通过,很麻,希望官网大佬能帮忙排查一下.

回答关注问题邀请回答
收藏

2 个回答

  • H1HAO 🇨🇳
    H1HAO 🇨🇳
    06-06
    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

    06-06
    有用
    回复
  • hello world
    hello world
    06-05

    把你代码中的wx.onLocationChange删除掉就不会有这个提示了

    确定没用到onLocationChange的话,忽略也行

    06-05
    有用
    回复
登录 后发表内容