欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > uniapp小程序持续获取用户位置信息,后台位置获取

uniapp小程序持续获取用户位置信息,后台位置获取

2025/2/24 0:48:30 来源:https://blog.csdn.net/m0_46978096/article/details/142440316  浏览:    关键词:uniapp小程序持续获取用户位置信息,后台位置获取

做一个小程序持续获取用户位置信息的功能,即使小程序切换到后台也能继续获取,getLocation这个api只有小程序在前台才能获取位置,所以不用这个

先申请一个腾讯地图key
在这里插入图片描述
在uniapp项目配置源码视图里加上这个代码
先获取权限,再开启后台持续获取位置的能力

"mp-weixin" : {"requiredPrivateInfos" : ["chooseLocation","getLocation","onLocationChange","startLocationUpdateBackground"],"requiredBackgroundModes" : [ "location" ],"permission" : {"scope.userLocation" : {"desc" : "方便您使用更完整的功能"},"scope.startLocationUpdateBackground" : {"desc" : "方便获取您的位置"}}
},

下面是使用页面的代码

//获取位置权限
setPosition(){const thle = this;uni.getSetting({success(res) {console.log('权限权限',res.authSetting)if (!res.authSetting['scope.userLocation']) {uni.authorize({scope: 'scope.userLocation',success() {console.log("用户成功授权位置信息")thle.keepPosition()},fail() {console.log("用户拒绝授权位置信息,再次提示用户授权")thle.showRefuseLocationPermission('nonono')}})}else if(!res.authSetting['scope.userLocationBackground']){//后台获取位置变化的权限uni.authorize({scope: 'scope.userLocationBackground',success() {console.log("用户成功授权位置信息")thle.keepPosition()},fail() {console.log("用户拒绝授权位置信息,再次提示用户授权")thle.showRefuseLocationPermission('nonono')}})}else{thle.keepPosition() }}})
},
//持续上传位置
keepPosition(){const thle = this;// uni.startLocationUpdate({//   success: res => console.log('开启前台位置成功'),//   fail: err => console.error('开启前台位置失败:', err),// });//开启前后台位置获取uni.startLocationUpdateBackground({success: res =>{console.log('前后台位置成功')uni.onLocationChange(rr=> {console.log('持续位置:',rr);console.log('纬度:' + rr.latitude);console.log('经度:' + rr.longitude);thle.updataPosition(rr.latitude,rr.longitude)});},fail: err => console.error('前后台位置失败:', err),});
},
//更新位置
updataPosition(latitude,longitude){const thle = this;console.log('更新位置',latitude,longitude)uni.request({url: `https://apis.map.qq.com/ws/geocoder/v1/?key=${'腾讯地图key'}&location=`+ latitude + ',' +longitude,success: res => {console.log('解析成功',res) let address = res.data.result.address;//经纬度解析后的地址}})
},
// 用户拒绝授权的展示
showRefuseLocationPermission(e) {const that = this;uni.showModal({title: "提示",content: "需要获取用户位置以及后台定位权限",confirmText: "前往设置",showCancel: false,success(res) {if (res.confirm) {uni.openSetting({success: (res) => {console.log("打开设置成功", res);if (res.authSetting['scope.userLocation']) {console.log('成功授权userLocation')} else {console.log('用户未授权userLocation')// 递归调用本函数,(函数套函数)that.showRefuseLocationPermission()}},fail: (err) => {console.log("打开设置失败", err)}})}}})
},

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词