0

これは現在の場所を見つけるために使用するコードですが、場所を正確に指していません。9.909076、78.100758 ではなく、9.920473,78.102423 として場所を返します。

どこが間違っているのかわかりませんでした。提案を手伝ってください。

   try {
        locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);

        // getting GPS status
        isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

        // getting network status
        isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if (!isGPSEnabled && !isNetworkEnabled) {
            // no network provider is enabled
        }
        else {
            this.canGetLocation = true;
            if (isNetworkEnabled)   {
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    if (locationManager != null) {
                        location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                        Log.e("latitude", ""+latitude);
                        Log.e("longitude", ""+longitude);
                    }
                }
                // if GPS Enabled get lat/long using GPS Services
                if (isGPSEnabled) {
                    if (location == null) {
                        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        if (locationManager != null) {
                            location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();                      
                                longitude = location.getLongitude();
                            }
                            Log.e("latitude", ""+latitude);
                            Log.e("longitude", ""+longitude);
                        }
                    }
                }
            }
        } 
4

2 に答える 2

2

最初に Network Provider を使用していますが、これはあまり正確ではありません。ネットワークから場所の修正を取得した場合、コードは GPS の場所を使用しません。この場合、これだけの場所の変動が予想されます。正確な位置情報が必要な場合は、GPS プロバイダーを使用してください。

于 2013-01-16T12:36:27.250 に答える
0

このコードで試してください:

              public void onLocationChanged(Location location) {
          if (location != null) {
            GeoPoint point = new GeoPoint(
                (int) (location.getLatitude() * 1E6), 
                (int) (location.getLongitude() * 1E6));

            Toast.makeText(getBaseContext(), 
                "Latitude: " + location.getLatitude() + 
                " Longitude: " + location.getLongitude(), 
                Toast.LENGTH_SHORT).show();

}

于 2013-01-16T13:11:14.803 に答える