2013-10-04 3 views
1

фон: Я хорошо разбираюсь в WPF/XAML, но новый для Windows Phone 8.Windows Phone 8 Geolocator не может установить desiredAccuracy = High и связать в PositionChanged событие

Надеюсь, это просто что-то глупо, что я 'm missing ...

Я хочу, чтобы DesiredAccuracy была высокой, но я также хочу подключиться к событию PositionChanged.

Когда нижний код достигает _GeoLocator.DesiredAccuracy = PositionAccuracy.High; он отбрасывает прерывание. Если это не работает, все работает, но я очень хочу высокой точности.

Кажется, что оба взаимно исключают друг друга.

Сообщение об ошибке: операция прерывается (исключение из HRESULT: 0x80004004 (E_ABORT)). У меня есть возможности определения местоположения.

Пример нарушившей кода:

public MainPage() 
    { 
     InitializeComponent(); 

     _GeoLocator.MovementThreshold = 1; 

     _GeoLocator.PositionChanged += (Geolocator sender, PositionChangedEventArgs args) => 
     { 
      //UpdateLocation(args); 
      Console.WriteLine("Position Changed"); 
     }; 

     //THIS WILL THROW...WHY?? IF I COMMENT OFF POSITIONCHANGED ABOVE, IT WORKS FINE. 
     _GeoLocator.DesiredAccuracy = PositionAccuracy.High; 
    } 

ответ

4

Вы должны установить "DesiredAccuracy" перед "PositionChanged" обработчик событий (Similar question).

_GeoLocator.MovementThreshold = 1; 
_GeoLocator.DesiredAccuracy = PositionAccuracy.High; 
_GeoLocator.PositionChanged += (Geolocator sender, PositionChangedEventArgs args) => 
    { 
     //UpdateLocation(args); 
     Console.WriteLine("Position Changed"); 
    }; 
+0

Спасибо ... это победитель. От кого (аналогичный вопрос) размещена: «Вам не разрешено изменять какие-либо параметры уведомления (MovementThreshold, DesiredAccuracy или ReportInterval), пока вы получаете местоположение. Это включает в себя изменение позиции (событие PositionChanged), а также получение позиции async (GetPositionAsync). Если вы хотите изменить параметры уведомлений, вы должны отказаться от подписки на все события и/или дождаться завершения GetPositionAsync, а затем внести изменения ». – tronious