最近做的"湖北垃圾治理"小程序
在初次進入監督舉報頁面后,會使用 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 }); } }); } }); }
上述代碼可以每次進入頁面時,進行彈窗詢問,點擊取消則會不斷刷新彈窗提醒用戶授予位置權限。代碼可以直接使用。