Cómo convertir coordenadas GPS a localidad

Estoy programando una aplicación de Android para convertir las coordenadas de latitud y longitud disponibles dinámicamente en una ubicación legible por humanos.

Por ejemplo, 12.2, 4.5 se encuentra en el centro de Londres, Reino Unido. Con respecto a la granularidad, quiero poder al menos ubicar la ciudad -> pueblo. O si no, al menos la ciudad,

¿Puede alguien aconsejarme sobre las soluciones disponibles para este problema?

preguntado el 24 de agosto de 12 a las 03:08

Tienes dos respuestas correctas. Marque la respuesta como correcta que le ayudó. -

3 Respuestas

Prueba esto:

//listenner location changed
private class MyLocListener implements LocationListener {
   public void onLocationChanged(Location location) {
      if (location != null) {
         Log.d("LOCATION CHANGED", location.getLatitude() + "");
         Log.d("LOCATION CHANGED", location.getLongitude() + "");
      }
   }
}

 //Get address base on location
try{
 Geocoder geo = new Geocoder(youractivityclassname.this.getApplicationContext(), Locale.getDefault());
 List<Address> addresses = geo.getFromLocation(latitude, longitude, 1);
  if (addresses.isEmpty()) {
        yourtextfieldname.setText("Waiting for Location");
  }
  else {
     if (addresses.size() > 0) {       
        Log.d(TAG,addresses.get(0).getFeatureName() + ", 
         " + addresses.get(0).getLocality() +", 
         " + addresses.get(0).getAdminArea() + ",
         " + addresses.get(0).getCountryName());

     }
  }
}
catch (Exception e) {
    e.printStackTrace(); 
}

Respondido 24 ago 12, 04:08

El proceso de convertir la ubicación de un punto (latitud, longitud) en una dirección o nombre de lugar legible se llama Codificación geográfica inversa. [de Wikepedia]

Tienes que hacer uso de Geocodificador clase y método de uso getFromUbicación. Este método devuelve List<Address>, al que puede acceder iterando cada Dirección objeto de la lista.

Ejemplos:

  1. http://www.edumobile.org/android/android-development/gecoding-example/
  2. Android: codificación geográfica inversa - getFromLocation

contestado el 23 de mayo de 17 a las 12:05

Creo que esto dará un mejor resultado:

 private String convertLocationToAddress(Location location) {
    String addressText;
    String errorMessage = "";

    Geocoder geocoder = new Geocoder(getContext(), Locale.getDefault());

    List<Address> addresses = null;

    try {
        addresses = geocoder.getFromLocation(
                location.getLatitude(),
                location.getLongitude(),
                1
        );
    } catch (IOException ioException) {
        // Network or other I/O issues
        errorMessage = getString(R.string.network_service_error);
        Log.e(TAG, errorMessage, ioException);
    } catch (IllegalArgumentException illegalArgumentException) {
        // Invalid long / lat
        errorMessage = getString(R.string.invalid_long_lat);
        Log.e(TAG, errorMessage + ". " +
                "Latitude = " + location.getLatitude() +
                ", Longitude = " +
                location.getLongitude(), illegalArgumentException);
    }

    // No address was found
    if (addresses == null || addresses.size() == 0) {
        if (errorMessage.isEmpty()) {
            errorMessage = getString(R.string.no_address_found);
            Log.e(TAG, errorMessage);
        }
        addressText = errorMessage;

    } else {
        Address address = addresses.get(0);
        ArrayList<String> addressFragments = new ArrayList<>();

        // Fetch the address lines, join them, and return to thread
        for (int i = 0; i <= address.getMaxAddressLineIndex(); i++) {
            addressFragments.add(address.getAddressLine(i));
        }
        Log.i(TAG, getString(R.string.address_found));
        addressText =
                TextUtils.join(System.getProperty("line.separator"),
                        addressFragments);
    }

    return addressText;

}

Respondido el 15 de Septiembre de 17 a las 15:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.