2***@qq.com
2***@qq.com
  • 发布:2019-12-06 17:21
  • 更新:2023-07-28 15:11
  • 阅读:9140

官网原生接口uni.getlocation()经纬度数据不准确问题

分类:uni-app

操作:我间隔一秒调用一次uni.getlocation(),想要显示当前位置的经纬度。
问题:手机定位一直是开着的,且一直在当前页面没有退出。当我站在某个点静止不动时,显示当前位置的位置点是正确的,但是经纬度的值不定时发生改变(有时两个坐标点之间的距离相差十几米)。即使运动过程中也会出现这种情况,求解大佬如何解决此问题。

2019-12-06 17:21 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

说清楚是哪个平台。
建议你把所有平台都测试一下,看看是不是都是这样。

提醒下手机定位原理,如果gps开启且有信号,是最准确的,否则就会根据基站、ip进行定位。
定位服务都是浏览器、高德地图、微信地图、百度地图这几个专业服务商提供的。不是DCloud提供的,不存在DCloud的定位准不准的问题。

如果是app打包后定位不准,而真机运行没问题。那是你没有申请高德,需要去高德网站申请appkey等信息,填在manifest里,然后再打包

2***@qq.com

2***@qq.com (作者) - 前端小白

安卓手机和苹果手机上都是这种情况。GPS打开且有信号,但是用uni.getlocation()获取经纬度时,返回给我同一地点的经纬度值相差很大。

  • DCloud_heavensoft

    我说的平台,是app、各家小程序、h5

    2019-12-07 22:02

  • 2***@qq.com (作者)

    回复 DCloud_heavensoft:不好意思,理解错了。我想做一个app,所以主要是在app里面测的。

    2019-12-09 11:23

s***@163.com

s***@163.com - h5前后端

手机关掉wifi,用4G网络,开通定位(精准),并对你的app授权开通定位功能,试一下误差。gps定位有延时和死角问题,如果周期内取不到值会自动切换到基站和ip定位,此时不准确很正常。

  • 2***@qq.com (作者)

    定位功能已经授权了,但是好像存在这个问题:正常情况下,打开gps手机(华为荣耀8x)顶部会显示gps图标,现在我是每秒调用一次uni.getlocation(),按理说,顶部的gps图标静止不动,但现在调用一次location,图标就闪烁,然后静止时测出来的经纬度误差平均就在30米左右,运动时speed基本上是0,经纬度误差会大于30米。不知道怎么解决

    2019-12-09 11:40

  • s***@163.com

    回复 2***@qq.com: 说了gps有延迟的,一般要等待3--8秒,死角位置会永远取不到值,即使静止也取不到,所以你的业务逻辑要适当变更一下,总体来说在北上广等大城市相对好一些,三线城市不适合使用getlocation()做精准判断。

    2019-12-12 18:38

  • lzf李子凡

    回复 2***@qq.com: 你好 我想问一下那个定位的问题,我qq:2335028155

    2023-07-31 11:41

q***@163.com

q***@163.com

我的uni.getLocation 安卓打包后 获取的定位不准确相差600米左右,真机调试就没问题,苹果打包回也没问题,这个是什么原因啊,小米,华为式了都是这样

  • DCloud_heavensoft

    那是你没有申请高德,需要去高德网站申请appkey等信息,填在manifest里

    2021-03-26 08:40

  • 小小白啊

    回复 DCloud_heavensoft: 您好,在 安卓 部分机型中 早上定位好好的,到了下午定位就有偏差

    2021-11-04 09:31

怪物小帕

怪物小帕 - 程序猿一枚

好像uni.getLocation默认使用的是网络定位,我测试的时候发现如果关闭网络流量,只使用GPS,定位误差会很小,而且运动时speed也会出现,不关闭网络流量的话speed一直为0,如果你是要计算速度的话,可以用下面这个方法```javascript
// 返回俩个坐标点之间的距离
getDistance(lon1, lat1, lon2, lat2) {
let x, y, distance;
let lonres = lon1 > lon2 ? lon1 - lon2 : lon2 - lon1;
let latres = lat1 > lat2 ? lat1 - lat2 : lat2 - lat1;
x = (lonres PI R Math.cos((((lat1 + lat2) / 2) PI) / 180)) / 180;
y = ((lat2 - lat1) PI R) / 180;
this.speed = Math.roun(Math.hypot(x, y)); // 速度m/s
return (distance = Math.hypot(x, y)); // 距离m
}

  • 怪物小帕

    this.speed = Math.round(Math.hypot(x, y)); // 速度m/s

    少了个d

    2021-03-26 09:23

1***@qq.com

1***@qq.com

为什么用定位之后,经纬度在北京,但是我在沈阳

6***@qq.com

6***@qq.com

我一秒调用一次,在园区步行,要隔一段时间经纬度才会变,而不是一直在变

  • Adlaw

    走一两步就想经纬度变吗

    2022-08-22 13:53

  • lzf李子凡

    请我有解决吗

    2023-07-27 15:18

  • lzf李子凡

    请问有解决吗??

    2023-07-28 09:40

lzf李子凡

lzf李子凡

请问一下这个问题解决了吗?

lzf李子凡

lzf李子凡

我是定位相隔10来米 重新获取经纬度 一直是一样的这个问题有遇到吗

昭昭L

昭昭L - 开心就好

有几十米的误差范围

  • lzf李子凡

    我的获取经纬度一直都是 相同的经纬度 我走动几米或者10来米 都是一样的经纬度 请问一下有遇到吗》

    2023-07-28 15:08

  • lzf李子凡

    请问有遇到过这个问题吗 方便给个联系方式沟通吗?

    2023-07-28 15:09

昭昭L

昭昭L - 开心就好

没遇到过,我待着不动每秒的经纬度都是不一样的

  • lzf李子凡

    我的是app端的 用的高德的key type: 'gcj02' 能沟通一下吗

    2023-07-28 15:11

  • lzf李子凡

    uni.getLocation({

    type: 'gcj02',

    geocode: true,

    isHighAccuracy: true,

    altitude: true,

    highAccuracyExpireTime: '5000',

    success: (res) => {

    console.log("定位获取:", res);

    2023-07-28 15:12

  • 昭昭L

    回复 2***@qq.com: 什么设备,gps开启了吗

    2023-07-28 15:14

  • lzf李子凡

    回复 昭昭L: gps开启了,安卓设备 小米的

    2023-07-28 15:14

昭昭L

昭昭L - 开心就好

用了第三方的key吗?是安卓吗?每次获取的一样大概率拿的是ip定位的经纬度

  • lzf李子凡

    我在manifest配置了高德的key 但我用真机运行的

    2023-07-28 15:15

  • lzf李子凡

    回复 2***@qq.com: 我关闭了wifi或者流量就获取不到了

    2023-07-28 15:16

  • 昭昭L

    回复 2***@qq.com: 你可以逆向解析一下拿到的不变的经纬度看看是不是当地基站或者ip分发的位置,排查一下问题

    2023-07-28 15:18

  • lzf李子凡

    回复 2***@qq.com: getlocation:fail position retrieval timed out . errcode :3 code:3 关闭了流量就是这个

    2023-07-28 15:19

要回复问题请先登录注册