the places google example custom cities address android google-api google-places-api

example - google places autocomplete android



Restrinja la búsqueda de autocompletado a un país en particular en la API de Android de Google Places (3)

A partir de Google Play Services v9.6, ahora puede configurar un filtro de país para sus sugerencias de autocompletar. Por favor, asegúrese de que su versión de Play Services es al menos v9.6

AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder() .setTypeFilter(Place.TYPE_COUNTRY) .setCountry("US") .build(); Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN) .setFilter(autocompleteFilter) .build(this);

Puede cambiar los códigos de país usando sus códigos ISO ''Aplha 2''

Mi objetivo es restringir los resultados de Autocompletar de la API de Android de Google Places a un país en particular (Estados Unidos) solamente.

Estoy usando la siguiente API:

PendingResult<AutocompletePredictionBuffer> results = Places.GeoDataApi .getAutocompletePredictions(mGoogleApiClient, constraint.toString(), mBounds, mPlaceFilter);

Parece que LatLngBounds se supone que debe hacer este trabajo.

  1. Si es así, ¿cuáles son los valores de LatLngBounds para Estados Unidos?

  2. ¿Qué fuente usaste para obtener LatLngBounds para un país?

  3. LatLngBounds es un cambio, por lo que también puede incluir otros países en el resultado. Que hay de eso

  4. Hay una mejor manera de hacerlo?


La definición del método del constructor LatLngBounds se ve a continuación:

LatLngBounds (LatLng southwest, LatLng northeast)

es decir, toma dos valores LatLng uno para la ubicación suroeste del límite y el otro es la ubicación noreste del límite y los otros dos puntos del rectángulo se calculan de forma trivial.

If yes, then what are the values of LatLngBounds for United States?

mi estimación aproximada es que si no me equivoco, los valores de LatLng sudoeste serían 32.6393, -117.004304 y los valores de LatLng noreste serían 44.901184, -67.32254 para EE.

Which source did you use to get LatLngBounds for a country?

Generalmente uso http://www.findlatitudeandlongitude.com/ para verificar los valores de LatLng colocando el marcador en las ubicaciones requeridas.

LatLngBounds is a rectange - so it can include other countries in the result as well. What about that?

Sí, tiene razón, los límites anteriores serían puramente rectangulares y no es posible restringir los resultados solo a EE. UU. Utilizando estos límites.
Esto se debe a que los [límites] del rectángulo se calcularían utilizando dos puntos de latencia [SE y NW] que proporcionamos al constructor y los otros dos puntos se calcularían de forma trivial.

Is there a better way to do it?

Sí, podría utilizar la API del servicio web de Google Places en su lugar. El siguiente tutorial explica cómo utilizar la API.
http://codetheory.in/google-place-api-autocomplete-service-in-android-application/

Puede usar tipos de dirección y componentes de dirección para restringir los resultados utilizando esta API de la forma que desee: https://developers.google.com/maps/documentation/geocoding/intro#Types

Puede restringir por país, región y varios otros tipos utilizando los tipos mencionados en el enlace.

¡¡Espero eso ayude!!

PD: ¡Si alguien pudiera responder cómo restringir el uso de Bounds in Play Services API a un país en particular, sería realmente genial!


Si está utilizando PlaceAutocompleteFragment , puede configurarlo así:

AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder() .setTypeFilter(Place.TYPE_COUNTRY) .setCountry("US") .build(); mAutocompleteFragment.setFilter(autocompleteFilter);