Проблема эмулятора gps WP7 - PullRequest
2 голосов
/ 01 марта 2011

У меня проблема с использованием эмулятора GPS от Microsoft.Это мой код

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;
    }

После создания объекта IObservable я использую его следующим образом:

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 никогда не возникает.Кто-нибудь может подсказать почему?

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

Если GPSEmulator работает и все еще ... Статус GPS: NoData!

Попробуйте это!

GPSEmulator / MainWindow.xaml.cs / line: 391

string lat = currentPosition.X.ToString().Replace(",", "."); 
string lon = currentPosition.Y.ToString().Replace(",", "."); 
transmittedLocation = lat+","+lon;
0 голосов
/ 01 марта 2011

Вы впервые подписались на событие OnLoaded в конструкторе View или Page?

    public MainPage()
    {
        InitializeComponent();
        Loaded += OnLoaded;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...