uni-app uni.getLocation高精度参数highAccuracyExpireTime打包后不起作用
uni-app uni.getLocation高精度参数highAccuracyExpireTime打包后不起作用
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | windows11 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:windows11
HBuilderX类型:正式
HBuilderX版本号:4.56
手机系统:Android
手机系统版本号:Android 15
手机厂商:华为
手机机型:honor 80
页面类型:vue
vue版本:vue3
打包方式:云端
项目创建方式:HBuilderX
示例代码:
uni.getLocation({
type: 'gcj02',
isHighAccuracy: true,
geocode:true,
highAccuracyExpireTime: 30000,
success: function(res) {
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
操作步骤:
uni.getLocation({
type: 'gcj02',
isHighAccuracy: true,
geocode:true,
highAccuracyExpireTime: 30000,
success: function(res) {
预期结果:
uni.getLocation({
type: 'gcj02',
isHighAccuracy: true,
geocode:true,
highAccuracyExpireTime: 3000,
success: function(res) {
预期效果是每3秒获取一次高精确坐标,
实际结果:
打包后获取不到高精度坐标点,highAccuracyExpireTime
改为30000,打包后依然不好用
bug描述:
我这边需要做一个实时获取定位并生成线路图的功能,但是对定位点精确度要求高,使用uni.getLocation 获取定位点时已添加isHighAccuracy
和highAccuracyExpireTime
,真机运行和模拟器上获取的坐标点都是高精度的小数点后10几位,但是云打包安装后获取的基本都是小数点后6位的定位点,并不是高精度的,使用的腾讯地图,获取定位也是用的腾讯key,权限已添加
更多关于uni-app uni.getLocation高精度参数highAccuracyExpireTime打包后不起作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app uni.getLocation高精度参数highAccuracyExpireTime打包后不起作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
根据描述,问题可能出在云端打包配置或Android系统权限限制上。以下是几点分析:
-
高精度定位在Android 10+系统需要动态申请后台定位权限(ACCESS_BACKGROUND_LOCATION),仅manifest配置可能不够,建议在代码中动态检查并申请该权限。
-
检查打包时是否勾选了定位相关权限,特别是后台定位权限。云端打包有时会忽略部分权限配置。
-
华为/荣耀手机可能有自己的省电策略限制后台高精度定位,建议:
- 检查手机设置中是否授予了应用"始终允许"定位权限
- 关闭电池优化
- 在开发者选项中关闭"后台位置限制"
-
高精度定位需要GPS硬件支持,室内环境可能自动降级为网络定位导致精度下降。
-
建议测试时使用真机调试模式查看详细定位来源:
success(res) {
console.log('定位来源:', res.provider) // 打印定位提供方
}
若问题依旧,可尝试改用持续定位方案:
// 改为定时循环获取
setInterval(() => {
uni.getLocation({isHighAccuracy:true...})
}, 3000)