API de sitios para Android: obtenga las líneas de addres de Place.getAddress ()

En mi aplicación para Android, encuentro la dirección de ubicaciones usando Geocoder.getFromLocation() . Puedo obtener un objeto de Address y obtener las líneas de dirección de una dirección con Address.getAddressLine() .

Sólo estoy interesado en la primera línea de dirección, que puedo obtener fácilmente con Address.getAddressLine(0) .

Además, la aplicación permite al usuario elegir ubicaciones mediante PlaceAutocomplete . Cuando el usuario elige una ubicación, recibo un objeto Place y puedo obtener la dirección por Place.getAddress() .

El problema es, Place.getAddress() devuelve una cadena en lugar de un objeto de Address . Esta cadena contiene la dirección completa, por lo que no puedo obtener fácilmente la primera línea de dirección, como lo hice con el objeto de Address .

¿Cómo debo encontrar la primera línea de dirección de la cadena devuelta por Place.getAddress() ?

2 Solutions collect form web for “API de sitios para Android: obtenga las líneas de addres de Place.getAddress ()”

Respuesta breve es que no se pueden obtener datos estructurados de esa API . Por alguna razón, Google ha decidido que no es algo que la gente querría en Android.

Un colega mío ha registrado este problema con Google para solicitar el mismo nivel de información que se proporciona a los usuarios de iOS y JavaScript:

  • Problema 10019: exponer componentes de dirección en objeto Place

Una respuesta más larga es que sus opciones son:

  1. Te imaginas una manera inteligente de analizar esa cadena. Desafortunadamente, la actual estructura de la calle / suburbio / ciudad / provincia no es consistente en diferentes áreas (por ejemplo, Ciudad del Cabo en Sudáfrica tiene una estructura de oraciones diferente a Johannesburgo en Sudáfrica). Así que sus reglas de análisis deben ser muy inteligentes.
  2. Utiliza una API de Google diferente. La API de JavaScript proporciona datos estructurados para la llamada relacionada. Esta pregunta relacionada muestra más detalles sobre esa API. Desafortunadamente, Google recomienda no usar esta técnica.

Creo que Google sólo tiene la intención de darnos esta frase con el fin de elegir una dirección, en lugar de para nosotros para obtener información estructurada sobre la dirección. Para obtener mejor información, necesita obtener los valores lat / lng consultando el ID de lugar.

A partir de esos valores lat / lng, puede hacer una geolocalización inversa para obtener la dirección correcta.

Desafortunadamente en esta técnica, las API de Google nos fallan una vez más.

  • A menudo se puede tomar la dirección A, resolverla a un lat / lng dado, y resolver que a otra dirección B, que podría estar cerca de A, pero no lo es. Las llamadas de la API no son conmutativas como cabría esperar

He tenido una buena cantidad de experiencia con estas llamadas, y me gustaría que hubiera otra respuesta que podría proporcionar. Si desea seguir con las API de ubicación de Google, no podrá obtener lo que está pidiendo.

Ahora es imposible sólo con esta API. Pero puede usar Geocoder con latitud y longitud desde el objeto Place

  • Creación de un filtro de tipo de lugar para la API de Autocompletar de lugar para Android
  • Cómo restringir google lugares autocompletar a un país específico?
  • No se puede importar Google Places PlacePicker en el proyecto de Android
  • Combinando la API de Google Places y la API de sitios de Facebook
  • Cómo limitar la búsqueda de ubicación cercana según la ubicación actual mediante google maps en android?
  • Restringir resultados de autocompletar por setBoundsBias
  • Limitar el resultado en el país con Autocompletar de Google Place?
  • Android studio no puede resolver com.google.android.gms.location.places.AutocompleteFilter
  • Cómo configurar el texto del cuadro de diálogo de google api en el idioma predeterminado de la aplicación
  • Se abre Multiple PlaceAutoCompleteFragment cuando se hace clic en él muy rápidamente
  • Android Google Places autocomplete los límites de la API que no funcionan
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.