更新用户全局经纬度
/**
* 更新用户经纬度
*/
export const updateUserLocationInfo = () => {
const {globalData} = getApp();
return new Promise((resolve, reject) => {
wx.getLocation({
type: 'gcj02',
success(res) {
const { longitude, latitude } = res;
globalData.user_longitude = longitude.toFixed(6);
globalData.user_latitude = latitude.toFixed(6);
globalData.locationPermission = true;
resolve({longitude, latitude});
console.log('已获取用户位置经纬度', longitude, latitude);
},
fail(err) {
globalData.locationPermission = false;
globalData.user_longitude = '';
globalData.user_latitude = '';
resolve('auth fail!');
// reject(err)
// reject('auth fail!')
console.log('获取用户位置经纬度错误: ', err);
},
});
});
};
无地理权限时,提示用户开启
/**
* 无地理权限时,提示用户开启
*/
noPermissionHandle(){
const self = this;
wx.showModal({
title: '提示',
content: '您未授权位置信息,功能将无法使用',
showCancel: true,
confirmText: "授权",
confirmColor: "#FAD84C",
success(res){
if (res.confirm){
//确认则打开设置页面(自动切到设置页)
wx.openSetting({
success: (res) => {
console.log(res.authSetting);
if (!res.authSetting['scope.userLocation']) {
//未设置定位授权
console.log("未设置定位授权");
wx.showModal({
title: '提示',
content: '您未授权位置,功能将无法使用', //
showCancel: false,
success: function (res) {
console.log(res)
},
})
} else {
//第二次才成功授权
wx.showToast({
title:'位置授权成功!',
icon: 'none'
})
self.setData({
location_permission: true,
error_tip:''
},()=>{
self.onLoad(self.data.options)
})
// do something
console.log("设置位置授权成功");
}
},
fail: function () {
console.log("授权设置位置失败");
}
})
} else if (res.cancel){
console.log("cancel");
}
},
fail (){
console.log("open-fail");
}
})
},
使用示例
// 全局无定位信息时,更新用户经纬度
// 生命周期中更新定位
onLoad(){
if(!globalData.user_latitude){
await updateUserLocationInfo();//更新全局用户经纬度
if(!globalData.locationPermission){
this.noPermissionHandle()
}else{
//do something
}
}
}
// 点击某个按钮时判断是否有位置信息
tapButton(){
if(!this.data.location_permission){
this.noPermissionHandle()
return
}
}
如有错误遗漏,请各位批评指正。