我遇到一个非常愚蠢的问题

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
    float spd = myLoc.distanceTo(previousLocation) / (myLoc.getTime() - previousLocation.getTime());


上一个位置是上次存储myLoconLocationChanged,每次在1秒后被称为i-e。

现在我的问题是,有时它会给出极大的峰值。使spd变得比通常更高。

任何人都可以告诉我如何减少这种情况

最好的祝福

最佳答案

一些建议:


检查Location.hasSpeed()以查看是否已为您提供此信息。尽管我对用于产生该值的算法一无所知,但它可能比您的计算更可靠。
选中Location.getAccuracy()以确定何时忽略计算速度的特定修补程序。
彻底阅读这些技巧,以查看在处理GPS结果时如何进行选择的示例。它们可能太旧或太不精确,无法用于速度。 http://developer.android.com/guide/topics/location/strategies.html#Updates
对于我从事的应用程序,我实现了一个过滤器,该过滤器将当前位置与之前的两个位置进行了比较,并使用了最低的计算速度。您可能需要某种或多或少复杂的方法来确定对您有用的速度。

08-18 17:57