uniapp-⼩程序定位(授权定位)/**
* 授权&定位
*/
export default {
data() {
return {
isLocated: false // 是否定位成功
}
},
methods: {
/**
* 获取经纬度并触发回调函数
* @param {Function} successCb 获取成功回调
* @param {Function} authDenyCb 获取失败回调
*/
getLocation(successCb, authDenyCb) {
const self = this
type: 'wgs84', // 默认gps 坐标
altitude: false, // 是否返回⾼度
accuracy: 'best', // 精度值为20m
success(res) {
successCb && successCb(res)
self.isLocated = true
},
fail(err) {
if (
'getLocation:fail 频繁调⽤会增加电量损耗,可考虑使⽤ wx.onLocationChange 监听地理位置变化'
) {
uni.showToast({
title: '请勿频繁定位',
icon: 'none'
})
}
if (Msg === 'getLocation:fail auth deny') {
// 未授权
uni.showToast({ title: '⽆法定位,请重新获取位置信息', icon: 'none' })
authDenyCb && authDenyCb()
self.isLocated = false
}
if (Msg === 'getLocation:fail:ERROR_NOCELL&WIFI_LOCATIONSWITCHOFF') {
uni.showModal({
content: '请开启⼿机定位服务',
showCancel: false
})
}
}
})
},
/**
* 重新授权并调⽤定位⽅法
* @param {Function} successCb 授权成功回调
* @param {Function} authDenyCb 授权失败回调
*/
getAuthorize(successCb, authDenyCb) {
uni.authorize({
scope: 'scope.userLocation',
success: () => {
},
fail: (err) => {
err = err['errMsg']
uni
.showModal({
content: '需要授权位置信息',
confirmText: '确认授权'
})
.then((res) => {
if (res[1]['confirm']) {
如何制作app小程序uni.openSetting({
success: (res) => {
if (res.authSetting['scope.userLocation']) {
// 授权成功
uni.showToast({
title: '授权成功',
icon: 'none'
})
} else {
// 未授权
uni.showToast({
title: '授权失败',
icon: 'none'
})
}
})
}
if (res[1]['cancel']) {
// 取消授权
console.log('取消')
})
}
})
},
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。