共计 1802 个字符,预计需要花费 5 分钟才能阅读完成。
<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();
}
}
})
},
第二步:在需要获取地址的页面中:
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 {
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
})
}
})