Android geocoder ubicación inversa – forma fiable para obtener la ciudad?
He buscado bastante sin suerte hasta ahora.
El Android Geocoder devuelve el objeto android.location.Address
. La ciudad, por lo que he entendido, debe ser devuelto en getLocality()
. Parece que en Estados Unidos esto funciona bien, fuera no.
- "Los servicios de Google Play se están actualizando" en Google Maps API
- ¿Cómo manejar varios marcadores en Google Maps con la misma ubicación?
- ¿Cómo obtener el nombre de la ciudad de la latitud y la longitud en la brecha telefónica?
- ¿Cómo puedo encontrar la latitud y la longitud de la dirección?
- PhoneGap - ¿Cómo volver cuando se presiona Google Maps "Términos de uso"?
Estoy escribiendo una aplicación internacional y luchar para encontrar una solución para averiguar la ciudad de una geolocalización.
Aquí la producción de República Checa / Praga:
Address[addressLines= [0:"Psohlavců 1764/2", 1:"147 00 Prague-Prague 4", 2:"Czech Republic"], feature=2, admin=Hlavní město Praha, sub-admin=Prague, locality=null, thoroughfare=Psohlavců, postalCode=147 00, countryCode=CZ, countryName=Czech Republic, hasLatitude=true, latitude=50.0276543, hasLongitude=true, longitude=14.4183926, phone=null, url=null, extras=null]
locality
es nula, la ciudad está dentro de sub-admin
! La dirección en sí está bien, por lo que el servidor de geocoder parece conocer la ciudad.
Aquí algunos ejemplos al azar de la UE pero la localidad funciona en parte:
Address[addressLines=[0:"Nad lesem 440/34",1:"147 00 Prague-Prague 4",2:"Czech Republic"],feature=34,admin=Hlavní město Praha,sub-admin=Prague,locality=null,thoroughfare=Nad lesem,postalCode=147 00,countryCode=CZ,countryName=Czech Republic,hasLatitude=true,latitude=50.02424,hasLongitude=true,longitude=14.4117568,phone=null,url=null,extras=null] Address[addressLines=[0:"Hauner Straße 4",1:"84431 Heldenstein",2:"Germany"],feature=4,admin=null,sub-admin=null,locality=Heldenstein,thoroughfare=Hauner Straße,postalCode=84431,countryCode=DE,countryName=Germany,hasLatitude=true,latitude=48.2540274,hasLongitude=true,longitude=12.3413535,phone=null,url=null,extras=null] Address[addressLines=[0:"Igler Straße",1:"6020 Innsbruck",2:"Austria"],feature=Igler Straße,admin=Tyrol,sub-admin=Innsbruck,locality=Innsbruck,thoroughfare=Igler Straße,postalCode=6020,countryCode=AT,countryName=Austria,hasLatitude=true,latitude=47.2465698,hasLongitude=true,longitude=11.4054237,phone=null,url=null,extras=null] Address[addressLines=[0:"Durnberg 24",1:"5724 Stuhlfelden",2:"Austria"],feature=24,admin=Salzburg,sub-admin=Zell am See District,locality=null,thoroughfare=Durnberg,postalCode=5724,countryCode=AT,countryName=Austria,hasLatitude=true,latitude=47.3233373,hasLongitude=true,longitude=12.4960482,phone=null,url=null,extras=null] Address[addressLines=[0:"U Roháčových kasáren 14",1:"100 00 Prague 10",2:"Czech Republic"],feature=14,admin=Hlavní město Praha,sub-admin=Prague,locality=Prague 10,thoroughfare=U Roháčových kasáren,postalCode=null,countryCode=CZ,countryName=Czech Republic,hasLatitude=true,latitude=50.0704092,hasLongitude=true,longitude=14.4673473,phone=null,url=null,extras=null]
Tal vez la culpa está en mí, pero para mí parece que dependiendo del país y el área de la ciudad se encuentra en diferentes campos. Sin embargo, la dirección en sí misma parece ser lo suficientemente buena como para enviar una carta postal.
¿Ha escrito alguien una función inteligente que intenta hacer más sentido de los resultados de Geocoder? Es una lástima ver que Google tiene la información almacenada pero no la proporciona correctamente.
- ¿Cómo centrar la cámara para que el marcador esté en la parte inferior de la pantalla? (Google map api V2 Android)
- Mapview NullPointerException android
- Cómo eliminar un solo marcador con Google Maps V2?
- Actividad de filtraciones de MapView (sin servicio de ubicación)
- ¿Es posible mostrar / ocultar los marcadores en Android Google maps api v2?
- Androide MapView en el fragmento
- Rotar el marcador en función de la dirección de conducción
- Esta aplicación no se ejecutará a menos que actualice Google Play Services.
Para cerrar mi pregunta, lo solucioné con una solución. Utilizando la sugerencia de dannyroa
String city="unknown"; if (address.getLocality() != null) city=address.getLocality(); else if (address.getSubAdminArea() != null) city=address.getSubAdminArea();
Esto podría ampliarse aún más al extraer la información de la ciudad de la segunda línea de dirección. Quitar el código postal y tomar el resto, pero esta información no es única dentro de una ciudad y podría cambiar dependiendo del distrito / zona.
- Obtener la vista que está recibiendo todos los eventos táctiles
- Proceso de fondo de caché de Android está aumentando continuamente