0

我正在尝试使用 Cohen 的 Windows phone GPS Emulator 自己计算速度。

  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 的结果不稳定。有时速度是 10m/s,有时会跳到 20m/s。

我在这里做错了什么?

4

1 回答 1

0

GPS 的准确性有限。如果您每秒进行 20 次定位并移动 - 比如说 10m/s,则两次定位之间的位置差异约为 0.5m,这通常是(取决于硬件、卫星的视线和 GPS 可用的卫星数量)低于 GPS 的精度。

尝试每隔几秒使用一次修复或保留一个修复队列(您可以使用循环数组来有效地实现队列)并使用平均速度。我建议两者结合。

于 2012-02-06T09:56:26.473 回答