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 获取定位点时已添加isHighAccuracyhighAccuracyExpireTime,真机运行和模拟器上获取的坐标点都是高精度的小数点后10几位,但是云打包安装后获取的基本都是小数点后6位的定位点,并不是高精度的,使用的腾讯地图,获取定位也是用的腾讯key,权限已添加


更多关于uni-app uni.getLocation高精度参数highAccuracyExpireTime打包后不起作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app uni.getLocation高精度参数highAccuracyExpireTime打包后不起作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据描述,问题可能出在云端打包配置或Android系统权限限制上。以下是几点分析:

  1. 高精度定位在Android 10+系统需要动态申请后台定位权限(ACCESS_BACKGROUND_LOCATION),仅manifest配置可能不够,建议在代码中动态检查并申请该权限。

  2. 检查打包时是否勾选了定位相关权限,特别是后台定位权限。云端打包有时会忽略部分权限配置。

  3. 华为/荣耀手机可能有自己的省电策略限制后台高精度定位,建议:

  • 检查手机设置中是否授予了应用"始终允许"定位权限
  • 关闭电池优化
  • 在开发者选项中关闭"后台位置限制"
  1. 高精度定位需要GPS硬件支持,室内环境可能自动降级为网络定位导致精度下降。

  2. 建议测试时使用真机调试模式查看详细定位来源:

success(res) {
    console.log('定位来源:', res.provider) // 打印定位提供方
}

若问题依旧,可尝试改用持续定位方案:

// 改为定时循环获取
setInterval(() => {
    uni.getLocation({isHighAccuracy:true...})
}, 3000)
回到顶部