<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 }) } })