一 获取用户的当前设置及二次授权
<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文件(必须)
申请密钥
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
})
}
})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。