文件写在了App.vue
onShow() {
this.handleAuthorize()
},
methods: {
// 获取用户的地理位置,
getLocationFn() {
const _this = this
uni.getLocation({
type: 'gcj02', // <map> 组件默认为国测局坐标gcj02
altitude: true,
success(res) {
uni.setStorageSync('latitude', res.latitude)
uni.setStorageSync('longitude', res.longitude)
uni.$emit('getlocal', 1)
// _this.globalData.userInfo = {
// latitude: res.latitude,
// longitude: res.longitude,
// }
}
})
},
// 用户授权
handleAuthorize() {
const _this = this // 下边this 为undefined
uni.authorize({
scope: 'scope.userLocation', // 获取地理信息必填的参数,其它参数见文档
success(res) {
_this.getLocationFn()
},
// 授权失败
fail(err) {
err = err['errMsg']
uni.showModal({
title: '温馨提示',
content: '为享受智能小程序,您必须授权!',
showCancel: false,
confirmText: '确认授权'
})
// 这里只设置了确认按钮,没有取消按钮
.then(res => {
if (res[1]['confirm']) { // 点击了确认按钮时
// 调用下边方法时,会弹出 【使用我的地理位置】界面, 未设置直接返回,还是会走fail授权失败的函数,
// 还是会弹出上边的温馨提示!!!
// 如果设置, scope.userLocation: true
uni.openSetting({
success(res) {
// 如果不设置,res结果:
// {errMsg: "openSetting:ok", authSetting: {scope.userLocation: false}}
// 如果设置, res结果:
// {errMsg: "openSetting:ok", authSetting: {scope.userLocation: true}}
// console.log('小程序设置界面:', res)
}
})
}
})
}
})
},
}