java - Android 中 GPS_PROVIDER 或 NETWORK_PROVIDER 的位置不一致

标签 java android google-maps gps geolocation

我正在尝试做什么

  • 使用服务以指定的时间间隔获取用户位置,以便只要应用程序正在运行,就可以检索位置

我面临的问题

  • 即使我长时间处于同一位置,每次纬度经度都会随着不同准确度级别而变化
  • 因此,即使用户没有更改其位置,如果我在 GoogleMap 中绘制位置,它也会跳转到非常接近我的缩放级别的位置18.0f
  • mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLon, 18.0f));

我已经尝试过 stackoverflow Link One 中提到的方法和 stackoverflow Link Two

但是,即使我坐在同一个位置并定期检索位置,纬度和经度也会有所不同,查看每个经度末尾突出显示的值 :

纬度:12.8379283 长:经度:77.6647266

纬度:12.8379233 长:经度:77.6647368

纬度:12.8379285 长:经度:77.6647506

纬度:12.8379245 长:经度:77.6647546

但每次准确性不同且经纬度略有变化时。

由于我的代码试验与链接中提到的完全相同,所以我不仅仅是复制粘贴在这里。如何解决这个问题

最佳答案

GPS 的准确性不是绝对的,因此即使是静态设备也会在连续读数中显示不同的位置。请尝试以下操作:

  1. 您可以添加一种方法,通过读取加速度计来检测移动设备是否静态 - 如果两个读数之间的增量大于某个阈值 - 设备正在移动。如果它太小,它就不会移动。要确定增量,请将设备放在 table 上,看看会得到什么值。
  2. 忽略近距离读数 - 获取准确度较高的第一个读数(<20m 或您确定的其他值)并将其用作引用 - 如果下一个读数给出的距离非常小,接近引用值(<10m 或其他值) ), 忽略它。如果它更大 - 将其设置为新引用。

关于java - Android 中 GPS_PROVIDER 或 NETWORK_PROVIDER 的位置不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35745924/

相关文章:

Java-使用正则表达式解析具有复系数的多项式

Android iosched 项目错误

java - Android:对象包含类 ID

c# - 尝试存档 Xamarin 应用程序以进行发布时找不到程序集 Mono.Android

Java - 将默认浮点常量类型从 double 更改为 float

javascript - Google Map fitBounds 使 map 位于海洋中 :)

javascript - 谷歌地图 : how to find all of the markers inside the map by using gmaps. js

android - 获取多边形角内的随机点?

java - 无法将 Groovy 代码添加到现有 Maven Java 项目 "def cannot be resolved to a type"

java - 如何从 Derby 数据库获取过去 30 秒内插入的条目?