1

私のアプリケーションでは、GPSやネットワークによる緯度と経度の値が必要です。私のコードは機能しますが、正確な値が得られる場合もあれば、正確な値が得られない場合もあります。正確な場所から10メートルまたは20メートル離れた値が得られる場合もあります。コード:

mlocListener = new MyLocationListener(getApplicationContext());
    /* Use the LocationManager class to obtain GPS locations */
    LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                10000, 0, mlocListener);
    } else if (mlocManager
            .isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
        mlocManager.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER, 10000, 0, mlocListener);
    }

    Location gpsLocation = mlocManager
            .getLastKnownLocation(LocationManager.GPS_PROVIDER);
    Location netLocation = mlocManager
            .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

    if (gpsLocation != null) {
        mlocListener.latitude = gpsLocation.getLatitude();
        mlocListener.longitude = gpsLocation.getLongitude();

        double lat = (double) (gpsLocation.getLatitude());
        double lng = (double) (gpsLocation.getLongitude());


        Toast.makeText(this, "Location attributes using GPS Provider",
                Toast.LENGTH_LONG).show();

    } else if (netLocation != null) {
        mlocListener.latitude = netLocation.getLatitude();
        mlocListener.longitude = netLocation.getLongitude();

        double lat = (double) (netLocation.getLatitude());
        double lng = (double) (netLocation.getLongitude());



        Toast.makeText(this, "Location attributes using NETWORK Provider",
                Toast.LENGTH_SHORT).show();

    } 
4

3 に答える 3

2

loc.getAccuracy() メソッドを使用して、受信した位置の精度レベルを確認します。値が 10 未満 (またはそれ未満) の場合は、それを考慮することができます。それ以外の場合は、場所リスターが別の場所をフェッチするのを待ちます。

getLastKnownLocation は、最後に確認された場所です。getAccuracy だけを使用して時間を確認しないでください。

正確な位置情報のみが必要な場合は、getLastKnownLocation を使用しないでください。

于 2012-05-24T09:43:04.390 に答える
0

通常、GPSは最大3mの精度ですが、10〜20メートルの場合、GPSで可能です。

民間用の標準的なGPS受信機は、数メートルまでの精度を提供します。実践では、受信した衛星の数と形状が精度に大きく影響し、日常の使用では約20mの精度が期待できます。

GPSの精度

また、ネットワークプロバイダーから現在の場所を取得している場合は、さらに不正確な場所が予想される場合があります。

于 2012-05-24T09:27:56.957 に答える
0

最大限の精度を得ることを楽しみにしている場合は、電話会社などに関連する他の要因の影響を受けるため、ネットワークプロバイダーを却下することをお勧めします.

locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER) 

これは、携帯電話の内蔵 GPS 受信機を使用して位置情報を取得しますが (時間がかかります)、最大限の精度が得られます。

于 2014-03-20T13:26:35.747 に答える