12

いくつかのダブルを保存/復元しようとしています。私が見ているのは、デバッガーに接続している間は機能するということですが、アプリを閉じてから 15 分後にアプリを再起動すると、両方の double で「-180」が復元されます。

これは正しく見えますか?それとも、私が「-180」を保存していると思いますか?

これはシミュレーターではなくデバイスを使用しています。私はこれを使用してMap.DidUpdateUserLocationいますMKUserLocationEventArgs

どういうわけか、位置に-180、-180を与えます。Xamarin のバグの可能性はありますか?

    private CLLocationCoordinate2D GetLastLocation()
    {
        var user = NSUserDefaults.StandardUserDefaults;

        double lat = user.DoubleForKey ("LastPositionLat");
        double lng = user.DoubleForKey ("LastPositionLng");

        var location = new CLLocationCoordinate2D (lat, lng);
        return location;
    }

    private void SaveLastLocation(CLLocationCoordinate2D coord)
    {
        var user = NSUserDefaults.StandardUserDefaults;
        user.SetDouble (coord.Latitude, "LastPositionLat");
        user.SetDouble (coord.Longitude, "LastPositionLng");
        user.Synchronize ();
    }
4

4 に答える 4

0

xamarin studio から再起動すると、シミュレーターのアプリケーション ID が変更されることがわかりました。おそらく、NSUserDefaults ストレージが破損する可能性があります。シミュレーターのアプリ アイコンをタッチして、アプリケーションを再起動できることを確認してください。

于 2015-09-03T08:00:23.710 に答える
0

-180 は、0 や MAX の double ではなく、座標に関連しているように見えるため、間違いなく疑わしいと思われます。ロケーション マネージャーがユーザーの位置を特定する前に、ユーザーの位置を取得している可能性があります。ロケーション マネージャーから提供された読み取り値が 15 秒以内であることを確認してください。通常、最新の場所を取得しているときに、最後の場所のロックを提供します。-180 は、シミュレーターが「最後に認識された場所」として提供するものである可能性があります。

モノタッチはわかりませんが、正しいメソッドを呼び出しているようです。

于 2013-08-06T23:21:41.760 に答える