getLatitude(),getLongitude()返回错误的纬度和经度值

时间:2013-01-16 12:32:16

标签: android map geolocation

这是我用来查找我当前位置的代码,但它没有准确指出位置,它返回的位置为9.920473,78.102423而不是9.909076,78.100758

我无法弄清楚我哪里出错了,请帮我提出建议。

   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);
                        }
                    }
                }
            }
        } 

2 个答案:

答案 0 :(得分:2)

您首先使用网络提供商,这不是很准确。如果您从网络获得位置修复,您的代码将不会使用GPS位置。在这种情况下,可以预期位置的这种大的变化。如果您需要确切的位置,请使用GPS提供商。

答案 1 :(得分: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();

}