Windows phone 7 计算WP7 GPS速度时出现奇怪的结果

Windows phone 7 计算WP7 GPS速度时出现奇怪的结果,windows-phone-7,gps,windows-phone-7-emulator,Windows Phone 7,Gps,Windows Phone 7 Emulator,我试图用科恩的Windows phone GPS模拟器自己计算速度 void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) { DateTime curTime = DateTime.Now; double curDistance = e.Position.Location.GetDistanceTo(lastKnow

我试图用科恩的Windows phone 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; 
void watcher\u位置已更改(对象发送器,地理位置更改Deventargs e)
{
DateTime curTime=DateTime.Now;
双curDistance=e.Position.Location.GetDistanceTo(lastKnownPosition);
TimeSpan curTimeOffset=curTime-lastRecvTime;
双游标速度=curDistance/curTimeOffset.TotalSeconds;
当LastKnownPosition表示最后一个地理坐标时,lastRecvTime也是如此。 这里的问题是我得到的是关于速度的不稳定结果。有时速度是10米/秒,有时会跳到20米/秒


我做错了什么?

GPS的精度有限。如果每秒移动20个定位点,比如10米/秒,两个定位点之间的位置差约为0.5米,这通常(取决于硬件、卫星的视线和GPS可用的卫星数)低于GPS的精度


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

听起来像是典型的Windows时间估计:你确定你是在直线上“行走”吗?GPS模拟器配置为只做直线,所以经常调用yesHow函数吗?你可能需要使用某种运行平均值来计算volaCollin Hockey:根据我所看到的,每0.041秒你基本上是说我应该积累:假设向后3秒,然后通过:总通过距离/3秒计算平均速度?基本上是的,但是使用与位置实例的时间差。Stefan:我怎么能不能将e.Position.Timestamp转换为utc,它是时间的正确变量吗?时间戳是GPS硬件获得定位的时间。对于计算定位之间的时间差,时区并不重要。