1、微信小程序获取地理位置授权,首先需要在app.json中添加配置:
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序定位,以便更好体验功能"
}
}
2、wxml代码:
<view class="map-point-select" bindtap="mapSetting">获取地址信息</view>
3、js代码:
/**
* 点击获取授权
*/
mapSetting: function () {
let that = this;
wx.getSetting({
success: (res) => {
// 拒绝授权后再次进入重新授权
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'
})
setTimeout(() => {
wx.navigateBack();
}, 1500)
} else if (res.confirm) {
wx.openSetting({
success: function (dataAu) {
if (dataAu.authSetting["scope.userLocation"] == true) {
that.getLocation(dataAu);
} else {
wx.showToast({
title: '授权失败',
icon: 'none'
})
setTimeout(() => {
wx.navigateBack();
}, 1500)
}
}
})
}
}
})
}
// 初始化进入,未授权
else if (res.authSetting['scope.userLocation'] == undefined) {
that.getLocation(res);
}
// 已授权
else if (res.authSetting['scope.userLocation']) {
that.getLocation(res);
}
}
});
},
/**
* 获取地理信息
*/
getLocation: function (userLocation) {
let that = this;
wx.getLocation({
type: "gcj02",
success: function (res) {
let latitude = res.latitude;
let longitude = res.longitude;
console.log(res);
},
fail: function (res) {
if (res.errMsg === 'getLocation:fail:auth denied') {
wx.showToast({
title: '您已拒绝授权',
icon: 'none'
})
setTimeout(() => {
wx.navigateBack();
}, 1500)
return
}
if (!userLocation || !userLocation.authSetting['scope.userLocation']) {
vm.mapSetting();
} else if (userLocation.authSetting['scope.userLocation']) {
wx.showModal({
title: '',
content: '请在系统设置中打开定位服务',
showCancel: false,
success: result => {
if (result.confirm) {
wx.navigateBack();
}
}
})
} else {
wx.showToast({
title: '授权失败',
icon: 'none'
})
setTimeout(() => {
wx.navigateBack();
}, 1500)
}
}
});
},
4、如果设备未开启位置信息服务,授权成功后在wx.getLocation()方法中也会获取失败,需要在fail方法中提示用户开启手机位置信息。