GeoCoordinateWatcher位置没有返回速度。 NaN代替

时间:2011-03-03 00:08:30

标签: windows-phone-7 gps

我一直在尝试用我的wp7从GPS获取读数。

我使用的代码与此处的示例非常相似: Getting GPS coordinates on Windows phone 7

我在页面上有两个文本块。一个显示Position.Location.Speed的速度,另一个显示Position.Location.TimeStamp的时间戳。这是由watcher_PositionChanged事件触发的。

我注意到事件每隔一秒左右被触发,因为时间戳会更新以反映这一点。我也将GPS状态读为“就绪”(前几个读数为“无数据”)但是,速度值继续显示NaN。

我将此代码加载到物理设备(LG Optimus 7)上,然后在仪表板上用手机沿着街道开车进行测试。

2 个答案:

答案 0 :(得分:0)

好的,我意识到GeoCoordinateWatcher在UI线程上运行,它表现得有些奇怪。将其移至单独的线程中可以解决问题。

答案 1 :(得分:0)

尝试用这种方式:

void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
    // you cannot change the UI in this function -> you have to call the UI Thread
    Deployment.Current.Dispatcher.BeginInvoke(() => ChangeUI(e));
}
void ChangeUI(GeoPositionChangedEventArgs<GeoCoordinate> e)
{
    // do magic 
}