最近做的"湖北垃圾治理"小程序

在初次進入監督舉報頁面后,會使用 wx.getLocation 調起用戶的位置授權,

如果點擊允許,則能在地圖上顯示當前定位;但是當用戶點擊取消后,就無法正常使用地圖定位功能。
並且小程序會記錄用戶的這個授權設置,除了刪除小程序再重新進入,否則位置權限就一直無法獲得,地圖一直無法定位。
因此我們需要主動引導用戶給予位置權限。以下是代碼:
onLoad() {
wx.getLocation({
type: "wgs84",
success(res) {
//如果首次授權成功則執行地圖定位操作,具體實現代碼與此文無關,就不貼出
},
fail: function(res) {
//授權失敗
wx.getSetting({
//獲取用戶的當前設置,返回值中只會出現小程序已經向用戶請求過的權限
success: function(res) {
//成功調用授權窗口
var statu = res.authSetting;
if (!statu["scope.userLocation"]) {
//如果設置中沒有位置權限
wx.showModal({
//彈窗提示
title: "是否授權當前位置",
content:
"需要獲取您的地理位置,請確認授權,否則地圖功能將無法使用",
success: function(tip) {
if (tip.confirm) {
wx.openSetting({
//點擊確定則調其用戶設置
success: function(data) {
if (data.authSetting["scope.userLocation"] === true) {
//如果設置成功
wx.showToast({
//彈窗提示
title: "授權成功",
icon: "success",
duration: 1000
});
wx.getLocation({
//通過getLocation方法獲取數據
type: "wgs84",
success(res) {
//成功的執行方法
}
});
}
}
});
} else {
//點擊取消按鈕,則刷新當前頁面
wx.redirectTo({
//銷毀當前頁面,並跳轉到當前頁面
url: "index" //此處按照自己的需求更改
});
}
}
});
}
},
fail: function(res) {
wx.showToast({
title: "調用授權窗口失敗",
icon: "success",
duration: 1000
});
}
});
}
});
}
上述代碼可以每次進入頁面時,進行彈窗詢問,點擊取消則會不斷刷新彈窗提醒用戶授予位置權限。代碼可以直接使用。
