Местоположение GeoCoordinateWatcher не возвращает скорость. NaN вместо

Я экспериментировал с получением показаний GPS с моим wp7.

Я использую код, очень похожий на пример, найденный здесь: Получение координат GPS в Windows телефон 7

У меня на странице 2 текстовых блока. Один показывает скорость из Position.Location.Speed, а другой показывает временную метку из Position.Location.TimeStamp. Это инициируется событием watcher_PositionChanged.

Я замечаю, что событие запускается каждую секунду или около того, поскольку метка времени обновляется, чтобы отразить это. Я также читаю статус GPS как «готов» (первая пара показаний - «Нет данных»). Однако значение скорости продолжает отображать NaN.

Я загрузил этот код на физическое устройство (LG Optimus 7) и поехал по улице с телефоном на приборной панели для проверки.


person NoCarrier    schedule 03.03.2011    source источник


Ответы (2)


Хорошо, я понял, что GeoCoordinateWatcher работает в потоке пользовательского интерфейса и ведет себя немного .. странно. Перенос этого в отдельный поток устранил проблему.

person NoCarrier    schedule 04.03.2011
comment
Можете уточнить, как вы это исправили? - person LongZheng; 01.07.2011

Попробуйте сделать это так:

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 
}
person boski    schedule 22.03.2014