-1

私はGPS関連のアプリで作業しています。垂直精度を取得する必要がありますが、常に 11.0000 に修正されます。緯度と経度のように動的にする必要があります。私は使用getAccuracyしましたが、水平精度が得られます。

@Override
public void onLocationChanged(Location location) {
    if (location != null) {
        lat = location.getLatitude();
        lon = location.getLongitude();
        Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
        address = mailOb.getAddress(geoCoder, lat, lon);

        if (!meterFootFlag) {
            diameter = Math.round(location.getAccuracy()) + " m.";
            altitude = Math.round(location.getAltitude()) + " m.";

        } else {
            diameter = Math.round(location.getAccuracy() * 3.28084) + " ft.";
            altitude = Math.round(location.getAltitude() * 3.28084) + " ft.";
        }

        if (diameter.contains("+"))
            diameter.replace("+", "");
        else if (altitude.contains("+"))
            altitude.replace("+", "");
    } else {
        lat = 0.0;
        lon = 0.0;

        if (!meterFootFlag) {
            altitude = 0.0 + " m.";
            diameter = 0.0 + " m.";

        } else {
            altitude = 0.0 + " ft.";
            diameter = 0.0 + " ft.";
        }
    }
    mlocManager.removeUpdates(MySettings.this);
    pDialog.dismiss();
}

垂直精度を取得するにはどうすればよいですか?

前もって感謝します

4

3 に答える 3

2

Android は垂直精度を提供しません。
通常、垂直方向の精度は水平方向の精度よりも 2 ~ 3 倍悪くなります。

簡単な解決策: 水平方向と垂直方向の両方にアンドロイドの精度を使用します。

高度な解決策 1: android が合計精度として使用するものを見つけます (緯度、経度、高度を含むエラー球の半径誤差である可能性があります)

変換係数を見つけようとします。たとえば、精度を取り、*2,5 を掛けます。

別の解決策として、iPhone の水平方向と垂直方向の精度を見て、Android の精度と比較します。acc から vert acc への平均変換係数を見つけます。

解決策 3: なぜ垂直精度が必要なのか考えてみてください。なぜそれが必要なのですか?

ヒント: 私の iPhone の例 4: iPhone が 30m hor を示している場合、57vert、10hor: 15-20vert、5 hor: 10vert があります。

于 2013-05-30T22:04:55.643 に答える