2013-02-17 4 views
0

Я разработал навигационное приложение для Windows Phone 7.1. Там было хорошо. После обновления до 8.0 мой GeoCoordinateWatcher больше не работает. Я знаю, что вместо этого я мог бы использовать Geolocator, но я отказываюсь делать это из-за нехватки времени.GeoCoordinateWatcher не работает после перехода на WP8

Для моего приложения я прочитал текущую позицию моего наблюдателя, чтобы сохранить его для экземпляра объекта с информацией о местоположении. Когда я сохраняю экземпляр объекта, долгота и широта равны 0.0. Даже когда я изменяю позицию в своем эмуляторе, все равно 0.0. Такая же проблема возникает и на моих других страницах, которые используют GeoCoordinateWatcher. Это не работает. Как я уже сказал, на WP 7.1 - 7.8 он работает очень хорошо.

public Map() 
    { 
     InitializeComponent(); 

     watcher = new GeoCoordinateWatcher(); 
     watcher.MovementThreshold = 20; 
     watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged); 
     watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged); 
    } 

    void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
    { 
     if (e.Position.Location.IsUnknown) 
     { 
      MessageBox.Show("Please wait while your prosition is determined."); 
      return; 
     } 

     geo.Latitude = e.Position.Location.Latitude; 
     geo.Longitude = e.Position.Location.Longitude; 
    } 

ответ

0

попробовать этот код:

GeoCoordinateWatcher watch; 
public GeoCoordinate loc = null; 
public MainPage() 
{ 
    InitializeComponent(); 
    if (watch == null) 
    { 
     watch = new GeoCoordinateWatcher(GeoPositionAccuracy.High) 
     { 
      MovementThreshold=10 
     }; 
     watch.Start(); 
     watch.PositionChanged += watch_PositionChanged; 
    } 
} 
void watch_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
{ 
    //throw new NotImplementedException(); 
    Dispatcher.BeginInvoke(()=>LocUpdate(e)); 
} 

void LocUpdate(GeoPositionChangedEventArgs<GeoCoordinate> e) 
{ 
    try 
    { 
     location = new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude); 


    } 
    catch 
    { 
     MessageBox.Show("Error"); 
    } 
} 
Смежные вопросы