void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
DateTime curTime = DateTime.Now;
double curDistance = e.Position.Location.GetDistanceTo(lastKnownPosition);
TimeSpan curTimeOffset = curTime - lastRecvTime;
double curSpeed = curDistance / curTimeOffset.TotalSeconds;
当LastKnownPosition表示最后一个GeoCoordinate时,lastRecvTime也是如此。 问题在这里我得到关于curSpeed的不稳定结果。有时候速度是10米/秒,有时会跳到20米/秒。
我在这里做错了什么?
答案 0 :(得分:0)
GPS精度有限。如果你每秒获得20次修复并移动 - 比如10m / s比两个修正之间的位置差异大约0.5m,这通常是(取决于硬件,卫星的视线和GPS可用的卫星数量)低于GPS的准确度。
尝试每隔几秒使用一次修复或保留一个队列(您可以使用循环数组来有效地实现队列)修复并使用平均速度。我建议将两者结合起来。