0

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

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

让我定义“坏”位置:- 这些是在 LocationRequest.setPriority = LocationRequest.PRIORITY_HIGH_ACCURACY 和返回的 Location 的 Location.getAccuracy() < 50 时获取的位置更新,但距离实际当前位置超过 1000 米.

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

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

我的问题

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

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

                     or

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

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

TIA。

4

1 回答 1

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
于 2016-12-14T07:11:08.800 回答