Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: NoCarrierОтветов: 2

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

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

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

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

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

gpswindows-phone-7

Ответы

Ответ 1 · NoCarrier

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

Ответ 2 · boski

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

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
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы