0

私は自分の携帯電話のGPSを聞いており、緯度と経度をWebサービスに投稿していonLocationChangedます。私の問題は、私の投稿の約2%で、非常に不正確な結果(数マイル離れている)が表示されることです。location投稿する前に、オブジェクトの精度を確認する必要がありますか?または他に何か提案はありますか?ありがとう!

public void onLocationChanged(Location location) {
    locationManager.removeUpdates(networkLocationListener);

    textView.setText(textView.getText().toString() + "New GPS location: "
            + String.format("%9.6f", location.getLatitude()) + ", "
            + String.format("%9.6f", location.getLongitude()) + "\n");

    //float accuracy = location.getAccuracy(); check this value?

    postLocationToWebservice(location);
}
4

2 に答える 2

1

これは、Android の位置情報サービスを使用しているときによく発生する問題です。正確な位置情報のみが Web サービスに投稿されるようにするために導入できるチェックはほとんどありません。

1.すべての位置情報サービスの精度を比較します。

2.精度の最小制限と時間の最大制限を定義します。

このコード スニペットを確認し、目的を達成するために必要な変更を加えます。アルゴリズムの精度を確認するログ ビルドを作成してください。

List<String> matchingProviders = myLocation.lm.getAllProviders();
    for (String provider: matchingProviders) 
    {
        Location location = myLocation.lm.getLastKnownLocation(provider);
        if (location != null) {
            float accuracy = location.getAccuracy();
            long time = location.getTime();

            if ((time > minTime && accuracy < bestAccuracy)) {
                bestResult = location;
                bestAccuracy = accuracy;
                bestTime = time;
            }
            else if (time < minTime && bestAccuracy == Float.MAX_VALUE && time > bestTime) {
                bestResult = location;
                bestTime = time;
            }
        }
    }
于 2012-06-22T14:57:22.127 に答える
0

NETWORK_PROVIDER更新された場所が代わりにによって報告される可能性がありますGPS_PROVIDER

次の方法で、常に最新の GPS 位置情報を取得できます。

     mLocationMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
于 2012-06-22T11:30:54.593 に答える