2012-02-03 56 views
0

即时通讯试图通过我自己使用Windows手机模拟器由科恩计算速度。奇怪的结果,当计算WP7的GPS速度

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代表最后会有地理座标,对lastRecvTime同样的事情。 问题在这里我得到curSpeed不稳定的结果。有时速度是10米/秒,有时会跳到20米/秒。

我在这里做错了什么?

+0

听起来像典型的Windows时间估计:http://xkcd.com/612/ – nybbler 2012-02-03 20:52:58

+0

你确定你是直线行走吗? – 2012-02-03 21:07:11

+0

GPS模拟器配置为只做直线,所以是 – 2012-02-03 21:19:55

回答

0

GPS的准确度有限。如果你每秒得到20次修正并移动 - 比如10米/秒,比两次修正之间的位置差大约0.5米,通常(取决于硬件,卫星视线和GPS可用卫星数量)低于GPS的准确度。

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

+0

所以你基本上说的是,我应该积累:让说约3秒倒退和然后通过以下方式查找平均速度: 总通行距离/ 3秒? – 2012-02-06 16:57:13

+0

基本上可以,但使用Location实例的时差。 – Stefan 2012-02-06 17:18:11

+0

Stefan:我如何将e.Position.Timestamp转换为utc,并且它是时间的正确变量? – 2012-02-06 18:39:20