uniapp- 使用 uni-getLocation 用户拒绝之后引导用户开启定位流程

 2025-08-26 08:33:28    2182  

注意:

1.用户手动授权定位, uni-getLocation 可以使用, 其他定位,请查阅,是否需要用户手动授权

2.用户在第一次使用需要获取定位的地方,拒绝之后才会拉起下面的这些数据的请求

3. 开发者测试 每次使用都需要清除缓存

4.小程序使用时候,没有触发 uni-getLocation 函数 , (小程序设置—位置消息)这个选择项不会显示到设置里面的,必须要触发一次才会展示

uni-getLocation 拒绝之后引导用户开启流程

1. 在调用 uni-getLocation 接口 (被用户拒绝,相当调用失败)在 fail: 里面请求 this.getSetting()

map(){

//wx.chooseLocation

uni.getLocation({

type: 'gcj02',

// type: 'wgs84',

success: (res) => {

this.lon = res.longitude

this.lat = res.latitude

},

fail: error => {

// console.log("获取定位失败了", error)

// uni.showToast({

// title: '你拒绝了授权,无法操作内容,请返回上一页',

// icon: "none",

// duration: 3000,

// })

this.getSetting()

}

}

2. 用户权限列表- 和引导用户手动开启定位

// 1.获取设置信息-用户权限列表

getSetting() {

uni.getSetting({

success: res => {

console.log('用户权限列表:', res.authSetting)

if (res.authSetting['scope.userLocation']) {

console.log('已授权userLocation')

// 选择位置信息

this.map()------------------------------------ 重新调取uni.getLocation

} else {

console.log('用户未授权userLocation')

//2.用户第一次进来发起授权

uni.showModal({

title: '提示',

content: '当前定位未开启,请点击确定手动开启定位',

duration: 3000,

success: (res) => {

if (res.confirm) {

this.openSetting()---------------------------------点击确定引导客户开启定位

} else if (res.cancel) {

uni.showToast({

title: '你拒绝了授权,无法获取医院信息',

duration: 2000,

icon: "none"

});

}

}

});

}

}

})

},

// 4.打开设置

openSetting() {

uni.openSetting({

success: (res) => {

if (res.authSetting['scope.userLocation']) {

// 5.用户在设置中点击了允许,调用选择位置信息函数

this.map()------------------------------------ 重新调取uni.getLocation

} else {

// 5.用户在设置中点击了不允许,展示拒绝授权信息

uni.showToast({

title: '你拒绝了授权,无法操作内容',

icon: "none",

duration: 3000,

})

}

},

fail: (err) => {

console.log("打开设置失败", err)

}

})

},

手动开启定位的位置 如图:

注意:如有不足之处,请谅解


诛仙哪个职业厉害?老司机手把手教你选对开荒本命职业
中央电视台主持人大全