开发者

WP7 gps emulator issue

开发者 https://www.devze.com 2023-02-13 20:18 出处:网络
I have an issue using the GPS emulator provided by microsoft. This is my code public IGeoPositionWatcher<GeoCoordinate> Watcher { get; private set; }

I have an issue using the GPS emulator provided by microsoft. This is my code

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 =&开发者_StackOverflow社区gt; Watcher.PositionChanged -= e
                            ).Select(e => e.EventArgs.Position.Location);

        return observable;
    }

After creating my IObservable object I use it this way:

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

But the event OnPositionChanged is never raised. Anyone can suggest why?


If GPSEmulator running and still ...GPS status: NoData!

Try this!

GPSEmulator/MainWindow.xaml.cs/line: 391

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


Have you first subscribed the OnLoaded event in your View or Page constructor ?

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

精彩评论

暂无评论...
验证码 换一张
取 消