在需要使用位置信息的页面(例如 onLoad 或 onShow 生命周期函数)中调用 wx.getSetting 方法检查用户是否已经授权地理位置权限:
Page({
onLoad: function() {
wx.getSetting({
success: res => {
if (res.authSetting['scope.userLocation']) {
// 已经授权,可以直接调用获取位置信息的方法
this.getLocation();
} else {
// 未授权,展示一个提示框,引导用户去授权
this.showAuthorizePrompt();
}
}
});
},
showAuthorizePrompt: function() {
wx.authorize({
scope: 'scope.userLocation',
success: () => {
// 用户同意授权后,再次调用获取位置信息的方法
this.getLocation();
},
fail: () => {
// 用户拒绝授权,可以提示用户开启位置权限的重要性
wx.showToast({
title: '请开启位置服务以提供更好的体验',
icon: 'none'
});
}
});
},
getLocation: function() {
wx.getLocation({
type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于地图的坐标
success: function(res) {
console.log('已获取到当前位置:', res);
// 处理获取到的位置信息
},
fail: function(err) {
console.error('获取位置信息失败:', err);
}
});
}
});
注意
之前已经授权过弹窗不会重复弹出,测试的时候需要手动卸载当前小程序然后重新进入的时候才会触发授权弹窗