1***@163.com
1***@163.com
  • 发布:2026-04-20 09:05
  • 更新:2026-04-20 09:08
  • 阅读:27

【报Bug】uni.getLocation不同时间返回的经纬度和速度相同,切速度不为0

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10.0.8.100

HBuilderX类型: 正式

HBuilderX版本号: 4.87

手机系统: Android

手机系统版本号: Android 12

手机机型: 暂无

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

uniGetLocation({
type = 'wgs84',
...moreOptions
} = {}) {
return new Promise((resolve) => {
uni.getLocation({
type,
success({
longitude,
latitude,
speed
}) {
resolve({
longitude,
latitude,
speed
});
},
fail(err) {
console.log('定位错误', err);
resolve(false);
},
...moreOptions,
});
});
},

操作步骤:

请看bug描述

预期结果:

能拿到对应时间真实的经纬度和速度信息

实际结果:

不同时间拿到的经纬度和速度相同,切速度不为0

bug描述:

使用uni.getLocation获取所在位置的经纬度和速度信息,但是不同的时间返回的经纬度和速度完全相同,而且速度都不为0,这是为什么?

2026-04-20 09:05 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

作为DCloud官方人员,对该bug反馈评审如下:

评审意见

该反馈存在信息不完整场景描述不清的问题,目前无法直接判定为框架bug,需要用户补充关键信息后方可进一步定位。

1. 反馈内容完整性评估

缺陷项:

  • 复现步骤缺失:仅标注"请看bug描述",未提供具体操作流程(如调用间隔、测试场景、设备状态等)。
  • 关键代码上下文缺失:代码示例仅为封装函数,未展示调用频率(是否定时轮询?间隔多久?)、调用时机(onShow? onLoad?)以及是否配置了定位SDK。
  • 测试场景不明确:未说明测试时设备是静止状态还是移动状态,未说明两次获取位置的时间间隔。

需补充的信息:

  1. 两次调用uni.getLocation的具体时间间隔(毫秒/秒级)
  2. 测试时设备是否实际发生位移
  3. manifest.json中是否配置了高德定位SDK(Android平台App需配置第三方SDK才能获取精准定位)
  4. 使用的是标准基座、自定义基座还是正式打包的apk
  5. 是否开启isHighAccuracy高精度定位参数

2. 技术可能性分析(基于知识库)

根据uni.getLocation文档

Android平台特殊机制:

  • Android由于谷歌服务被墙,真机运行时基座使用DCloud申请的高德SDK可正常定位,但打包后必须开发者自行在manifest中配置高德定位SDK(AppKey),否则可能使用系统定位导致精度低或返回缓存数据。
  • 使用type: 'wgs84'时,Android系统定位可能返回缓存坐标,特别是未配置第三方定位SDK时。

关于速度返回:

  • speed字段为GPS原生返回速度值,若经纬度相同但速度不为0,可能是:
    1. 获取的是缓存位置数据(坐标相同),但速度字段为实时计算值或上一次有效移动速度
    2. GPS信号漂移导致的微小位移被过滤(坐标未更新),但速度计算基于原始信号

注意: 知识库中cacheTimeout参数仅飞书小程序、支付宝小程序支持,App平台(Android/iOS)不支持该参数,无法通过此参数控制缓存。

3. 初步判断与建议

可能非Bug的情况:

  • 若两次调用间隔较短(如1秒内),且未配置高德SDK,Android系统定位可能返回相同缓存坐标,这是系统层行为。
  • 若设备实际静止,经纬度相同是预期结果;速度不为0可能是GPS噪点(常见于室内或信号不佳环境)。

建议验证步骤:

  1. 在manifest.json的App模块配置中配置高德定位SDK后重新打包测试
  2. 添加isHighAccuracy: truehighAccuracyExpireTime: 5000参数尝试获取更高精度
  3. 若需持续跟踪位置变化,应使用uni.onLocationChange而非频繁调用uni.getLocation
  4. 测试时确保设备实际发生大于10米的位移(GPS定位存在精度阈值)

结论: 当前反馈不足以认定为框架bug,建议用户补充上述信息后重新评估,或前往插件市场搜索定位增强插件进行测试对比。

内容为 AI 生成,仅供参考
1***@163.com

1***@163.com (作者)

定位时间相差4-6分钟

要回复问题请先登录注册