2011-03-01 4 views
2

Microsoft에서 제공하는 GPS 에뮬레이터를 사용하는 데 문제가 있습니다.WP7 gps 에뮬레이터 문제

public MainPage() 
    { 
     InitializeDefaults(); 
     InitializeComponent(); 

     Loaded += OnLoaded; 
    } 
private void OnLoaded(object sender, RoutedEventArgs e) 
    { 
     var observable = GpsHelper.Instance.ObservableGeoCoordinate; 
     observable 
      .ObserveOnDispatcher() 
      .Subscribe(OnPositionChanged); 
    } 

    private void OnPositionChanged(GeoCoordinate location) 
    { 
     Map.Center = location; 
    } 

그러나 OnPositionChanged가 발생하지 않습니다 경우 : 이것은 내가이 방법을 사용하여 내 IObservable 객체를 생성 한 후 내 코드

public IGeoPositionWatcher<GeoCoordinate> Watcher { get; private set; } 
public IObservable<GeoCoordinate> ObservableGeoCoordinate { get; set; } 
private void InitializeGpsDevice() 
    { 
     try 
     { 
      if (Watcher == null) 
      { 
       Watcher = new GpsEmulatorClient.GeoCoordinateWatcher(); 
      } 

      ObservableGeoCoordinate = CreateObservableGeoPositionWatcher(); 

      Watcher.Start(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(string.Format("Failed to initialize GPS device:{0}", ex.Message), "GPS Error", MessageBoxButton.OK); 
     } 
    } 
private IObservable<GeoCoordinate> CreateObservableGeoPositionWatcher() 
    { 
     var observable = Observable.FromEvent<GeoPositionChangedEventArgs<GeoCoordinate>>(
          e => Watcher.PositionChanged += e, 
          e => Watcher.PositionChanged -= e 
          ).Select(e => e.EventArgs.Position.Location); 

     return observable; 
    } 

입니다. 누구나 이유를 제안 할 수 있습니까?

답변

2

GPSEmulator가 계속 실행중인 경우 ... GPS 상태 : NoData!

시험해보세요.

GPSEmulator/MainWindow.xaml.cs를/라인 : 내가 한 391

string lat = currentPosition.X.ToString().Replace(",", "."); 
string lon = currentPosition.Y.ToString().Replace(",", "."); 
transmittedLocation = lat+","+lon; 
+0

사실상 감시자 상태 ID는 항상 NoData입니다. 그러나이 코드를 작성하도록 제안하는 위치를 이해하지 못했습니다. 아마도 GPSEmulator의 소스 코드에있을 것입니다.이 문제는 에뮬레이터의 문제라고 생각하십니까? – themarcuz

+0

네가 가져 왔어! GPS 에뮬레이터의 버그 였어! 아마도 지역 설정이나 비슷한 것으로부터 파생 된 문제 일 수도있어 어쨌든, 너는 나를 구 했어! – themarcuz

0

View 또는 Page 생성자에서 OnLoaded 이벤트를 처음 구독하셨습니까?

public MainPage() 
    { 
     InitializeComponent(); 
     Loaded += OnLoaded; 
    } 
+0

확인합니다. 너무 구체적이지 않아서 미안해. 편집 됨 게시물 – themarcuz

+0

좋아, 알았어. CreateObservableGeoPositionWatcher에서 관찰자를 시작해보십시오 (관찰 가능 상태로 돌아 오기 바로 전에). 관찰 가능한 개체는 구독 전에 Gps 시작과 연결되어있는 것 같습니다. – DavidP

+0

절대 안됩니다. 당신의 제안에도 불구하고 핸들러 OnPositionChanged는 절대로 호출되지 않습니다. 내가 뭘 잘못하고있는거야? – themarcuz