Filtrar los resultados de autocompletar de Google Places por país
Estoy trabajando en una aplicación para Android en la que deseo que el usuario busque datos (que mi aplicación proporciona) en una ciudad específica. Para eso tengo un campo de búsqueda en el que el usuario puede escribir un nombre de la ciudad. Utilizo la API de Google Places para recuperar resultados de autocompletado de la siguiente manera:
PendingResult results = Places.GeoDataApi .getAutocompletePredictions(mGoogleApiClient, searchQuery, mBounds, mPlaceFilter);
- PlacePicker no recoge temas de material
- Servicios de localización de cheques android habilitados con servicios de reproducción localización api
- GooglePlayServices no está disponible debido al error 2
- Problemas para implementar el nuevo cliente de GCM para Android
- El cuadro de diálogo de configuración de ubicación se muestra dos veces O cómo detectar que el cuadro de diálogo se muestra \ closed
En mi caso, mBounds representa los límites de Alemania, porque sólo estoy interesado en ciudades en Alemania y no quiero que ciudades de otros países aparezcan en las predicciones de autocompletado. Ahora, obviamente, Alemania no es un cuadrado perfecto, por lo que mBounds contiene toda Alemania, pero también partes de países vecinos como Suiza. Así que las preguntas son: ¿Cómo puedo eliminar todas las predicciones de autocompletado para lugares que no están en Alemania?
Mi primer pensamiento fue usar un filtro de lugar para obtener predicciones para un país en primer lugar. Según la documentación, esto se puede utilizar para filtrar por regiones (por ejemplo, por países), pero desafortunadamente este filtrado específico no se admite en la API de Google Places para Android (de acuerdo con la documentación).
La colección de tipos (regiones) no se admite en la API de Google Places para Android.
También no parece haber ninguna posibilidad de obtener el país de un lugar de la AutocompletePrediction o el objeto Place . Así que ni siquiera puedo hacer el filtrado yo mismo.
Las únicas soluciones que puedo pensar son las siguientes:
-
Obtener el lugar de la predicción y utilizar el Geocoder API para recuperar la dirección y de que obtener el país y hacer el filtrado. Sin embargo, eso es una llamada de red adicional (y otra contra mi cuota) que parece totalmente innecesaria ya que me parece que el objeto AutocompletePrediction o al menos los objetos Place deben saber en qué país es un lugar. Después de todo, es parte de los resultados de la descripción / toString de esos objetos. Sin embargo, eso es sólo una cadena como "Munich, Alemania".
-
Utilice la cadena de descripción mencionada en 1. para determinar el país. Sin embargo, eso parece una solución aún peor que 1, ya que la descripción se localiza dependiendo de la configuración del usuario que podría ser todo. Así que la búsqueda de "Alemania" no haría el trabajo.
Apreciaría una solución que es mejor que lo que he propuesto hasta ahora. No puedo imaginar que no hay una mejor manera de hacer esto. ¿Algunas ideas?
- Nuevos servicios de Google Play 8.3 SignInButton rompió la capacidad de obtener el cumpleaños y el primer / apellido
- No hay ninguna aplicación vinculada asociada con este ID de cliente
- Google Play Services 5.0.77
- SERVICE_VERSION_UPDATE_REQUIRED y el servicio de Google play desactualizado al integrar Google Plus en android
- DoubleClick for Publishers en Google Play Services causa NullPointerException en 4.2.2
- ¿Cómo añadir la versión de servicios de Google Play al manifiesto de tu aplicación?
- Servicios de juegos de Google Play: no puede iniciar sesión
- Pasando el objeto GoogleApiClient de una actividad a otra
Tuve el mismo problema sin suerte para encontrar una manera de filtrar en el país específico lo que hice como una solución estúpida es filtrar el resultado si contiene el nombre del país en mi caso "Emiratos Árabes Unidos"
while (iterator.hasNext()) { AutocompletePrediction prediction = iterator.next(); // Get the details of this prediction and copy it into a new PlaceAutocomplete object. if(prediction.getDescription().contains("United Arab Emirates")) resultList.add(new PlaceAutocomplete(prediction.getPlaceId(), prediction.getDescription())); }
- Determinar la razón para el tamaño del archivo odex
- Charles Proxy para Genymotion detiene 10.0.3.2 tráfico localhost