0

以下のコードスニペットをテストします。緯度と経度として奇妙な場所(0,0)が突然取得され、距離の計算が妨げられます。

if (loc != null) {
                double currentLatitude = loc.getLatitude();
                double currentLongitude = loc.getLongitude();

                if (first_time) {
                    loc.reset();
                    first_time = false;
                }

                synchronized (testObject) {
                    … do some work
                    previousLat = currentLatitude;
                    previousLon = currentLongitude;
                }
            }

緯度と経度が0になる状況を知りたいです。また、緯度と経度が0になるために、コードがどこでバグアウトするのかを知りたいです。location.reset()の結果は緯度と経度が0になりますか?

4

1 に答える 1

2

もちろん、リセットすると0になります。どうしてそれをするの?reset()を呼び出すときにどの値を期待しますか?Androidロケーションサービスによって配信されるロケーションには、精度セット(getAccuracy())があります。独自のロケーションオブジェクトを作成するか、reset()すると、0になります。

私が以前に書いた詳細情報は、計算する前に常に有効性をチェックする理由を示しています
。lat、lon0,0は理論的には有効な場所です。しかし、私の長年のGPS経験では、ヒントを提供します。座標(0,0)のあるすべての場所を無視します。
これは実際の動作に影響を与えません。デバイスを正確に0,0(センチメートルの精度で)に配置できないためです。配置できたとしても、1秒以内です。

必要に応じて、座標範囲の範囲外の特別な値を使用してlat、lonを初期化できます。しかし、それでもあなたは他の人の過ちから救われることはありません。

通常、場所が有効かどうかを確認します。有効なフラグがある場合は、Androidに存在する必要があります。水平精度の値を見てください。無効な場所を区別する方法についてのドキュメントをお読みください。

于 2013-03-27T10:49:40.437 に答える