我遇到一个非常愚蠢的问题
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
float spd = myLoc.distanceTo(previousLocation) / (myLoc.getTime() - previousLocation.getTime());
上一个位置是上次存储
myLoc
的onLocationChanged
,每次在1秒后被称为i-e。现在我的问题是,有时它会给出极大的峰值。使
spd
变得比通常更高。任何人都可以告诉我如何减少这种情况
最好的祝福
最佳答案
一些建议:
检查Location.hasSpeed()
以查看是否已为您提供此信息。尽管我对用于产生该值的算法一无所知,但它可能比您的计算更可靠。
选中Location.getAccuracy()
以确定何时忽略计算速度的特定修补程序。
彻底阅读这些技巧,以查看在处理GPS结果时如何进行选择的示例。它们可能太旧或太不精确,无法用于速度。 http://developer.android.com/guide/topics/location/strategies.html#Updates
对于我从事的应用程序,我实现了一个过滤器,该过滤器将当前位置与之前的两个位置进行了比较,并使用了最低的计算速度。您可能需要某种或多或少复杂的方法来确定对您有用的速度。