【问题标题】:Google location client optimizing inaccurate / wrong location updates谷歌位置客户端优化不准确/错误的位置更新
【发布时间】:2016-12-14 06:58:07
【问题描述】:

我正在制作一个 android 函数,用于保存我的客户在登录到我的应用程序时所经过的路径。有点像优步跟踪骑行路径的方式。

这在大多数情况下都可以正常工作,就像我之前的许多人所说的那样,GoogleLocationclient API 有时会在其“onLocationChanged”函数中返回“BAD”位置。

让我定义“坏”位置:- 这些是在 LocationRequest.setPriority = LocationRequest.PRIORITY_HIGH_ACCURACY 和返回的 Location 的 Location.getAccuracy()

因此,为了解决这个问题,我设置了一个 3 点队列,它缓存 3 个连续的位置更新并将它们相互比较,并且仅当它到第一个和第三个位置的距离小于之间的位置时才保存中间位置第 1 点和第 3 点。

当在 2 个准确点之间只弹出一个错误点时,这种方法可以正常工作。

我的问题

当连续收到超过 2 个“错误”位置时,此逻辑无法过滤掉不正确的位置,并且不会验证未来的点。 :(

任何人都可以建议:- a) 优化位置更新过滤的算法

                     or

b) 算法在收集所有行程的位置点后过滤掉“BAD”位置。

非常感谢任何帮助。如果这是一个重复的问题,请原谅我的疏忽并将我链接到原始问题:)。

TIA。

【问题讨论】:

  • 尝试改变Location.getAccuracy()

标签: android optimization google-location-services


【解决方案1】:

我会尝试以下方法:

1) Save a timestamp with every location point. 
2) Now calculate the movement speed between your actual point and your last point based on the timestamp and the location points
3) If the movement speed is higher than what is possible -> throw this point away / else keep him and move on

【讨论】:

  • 我需要在他们走路和开车时跟踪他们......所以我不知道这会有多大帮助......但我想我会尝试一个阻止的实现任何超过 120 公里/小时的速度,看看它会把我带到哪里...... Tnx 我会让你知道它的进展情况?
  • 是的,我认为这会起作用,因为位置更新之间的时间差非常低。 -> 因此,如果 1 点突然距离 1000m,我认为您将获得绝对不切实际的速度值。但请告诉我,我对您的结果非常感兴趣
  • MarkB :- 我试过这个并发现了一些改进。 . .连同其他一些问题,我正在尝试我兄弟提出的一个想法。我会在明天之前发布我的发现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多