0

Windows Phone 7.1 用のナビゲーション アプリケーションを開発しました。そこは元気に走っていました。8.0 に更新した後、GeoCoordinateWatcher が機能しなくなりました。代わりにGeolocatorを使用できることは知っていますが、時間がないため拒否します.

私のアプリでは、ウォッチャーの現在の位置を読み取り、位置情報を含むオブジェクト インスタンスに格納します。オブジェクト インスタンスを保存すると、経度と緯度は 0.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;
    }
4

1 に答える 1

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");
    }
}
于 2014-02-08T20:46:57.690 に答える