<view class="form-option" bindtap='getSetting'> <input placeholder="請選擇收貨地址" type="text" name="" bindinput="" value='{{address}}' /> </view> //首次進入,點擊‘選擇地址’
//彈出詢問框
拒絕受權後,再次進入該頁面或者點擊頁面某按鈕(獲取位置)綁定JS,再打開受權。
getSetting:function(){ //獲取用戶的當前設置 const _this = this; wx.getSetting({ success: (res) => { // res.authSetting['scope.userLocation'] == undefined 表示 初始化進入該頁面 // res.authSetting['scope.userLocation'] == false 表示 非初始化進入該頁面,且未受權 // res.authSetting['scope.userLocation'] == true 表示 地理位置受權 if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) { //未受權 wx.showModal({ title: '請求受權當前位置', content: '須要獲取您的地理位置,請確認受權', success: function (res) { if (res.cancel) { //取消受權 wx.showToast({ title: '拒絕受權', icon: 'none', duration: 1000 }) } else if (res.confirm) { //肯定受權,經過wx.openSetting發起受權請求 wx.openSetting({ success: function (res) { if (res.authSetting["scope.userLocation"] == true) { wx.showToast({ title: '受權成功', icon: 'success', duration: 1000 }) //再次受權,調用wx.getLocation的API _this.goAddress(); } else { wx.showToast({ title: '受權失敗', icon: 'none', duration: 1000 }) } } }) } } }) } else if (res.authSetting['scope.userLocation'] == undefined) { //用戶首次進入頁面,調用wx.getLocation的API _this.goAddress(); } else { // console.log('受權成功') //調用wx.getLocation的API _this.goAddress(); } } }) },
//加載騰訊位置服務js文件(必須)
申請密鑰html
var QQMapWX = require('../../utils/qqmap-wx-jssdk.min.js'); var qqmapsdk = new QQMapWX({ key: '開發密鑰(key)' // 必填 });
wx.getLocation({ type: "wgs84", success: function (res) { _this.setData({ longitude: options.lat ? Number(options.lng) : res.longitude, latitude: options.lng ? Number(options.lat) : res.latitude, markers: [{ latitude: options.lat ? Number(options.lat) : res.latitude, longitude: options.lng ? Number(options.lng) : res.longitude, }] }) if (options.lat){ _this.setData({ address: options.address, }) } else { //根據座標獲取當前位置名稱,顯示在頂部:騰訊地圖逆地址解析,前面已引入SDK qqmapsdk.reverseGeocoder({ location: { latitude: res.latitude, longitude: res.longitude }, success: function (addressRes) { const result = addressRes.result; _this.setData({ address: result.address, }) } }) } }, fail:function(){ wx.navigateBack({ delta:1 }) } })