Buscar lugares dentro de una ciudad en Google Places Apis

Estoy usando Google Places Apis para filtrar resultados dentro de una ciudad en particular. Soy capaz de filtrar results.but también muestra resultados fuera de esa ciudad. Por ejemplo, si establezco LatLngBounds de ciudad DELHI y buscando una ubicación en la ciudad NEWYORK. También me da el resultado de la ciudad de NEWYORK (pero el LatLng de NEWYORK no es mentiras dentro de DELHI).

¿Cómo puedo restringir mis resultados a una ciudad en particular?

Esta es mi clase PlaceAutoCompleteAdapter

import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.PendingResult; import com.google.android.gms.common.api.Status; import com.google.android.gms.common.data.DataBufferUtils; import com.google.android.gms.location.places.AutocompleteFilter; import com.google.android.gms.location.places.AutocompletePrediction; import com.google.android.gms.location.places.AutocompletePredictionBuffer; import com.google.android.gms.location.places.Places; import com.google.android.gms.maps.model.LatLngBounds; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Filter; import android.widget.Filterable; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.concurrent.TimeUnit; public class PlaceAutocompleteAdapter extends ArrayAdapter<AutocompletePrediction> implements Filterable { private ArrayList<AutocompletePrediction> mResultList; private GoogleApiClient mGoogleApiClient; private LatLngBounds mBounds; private AutocompleteFilter mPlaceFilter; public PlaceAutocompleteAdapter(Context context, GoogleApiClient googleApiClient, LatLngBounds bounds, AutocompleteFilter filter) { super(context,R.layout.simple_expandble_text_view_item, R.id.text1); mGoogleApiClient = googleApiClient; mBounds = bounds; mPlaceFilter = filter; } public void setBounds(LatLngBounds bounds) { mBounds = bounds; } @Override public int getCount() { return mResultList.size(); } @Override public AutocompletePrediction getItem(int position) { return mResultList.get(position); } @Override public View getView(int position, View convertView, ViewGroup parent) { View row = super.getView(position, convertView, parent); AutocompletePrediction item = getItem(position); TextView textView1 = (TextView) row.findViewById(R.id.text1); textView1.setText(item.getDescription()); return row; } @Override public Filter getFilter() { return new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults results = new FilterResults(); if (constraint != null) { mResultList = getAutocomplete(constraint); if (mResultList != null) { results.values = mResultList; results.count = mResultList.size(); } } return results; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { if (results != null && results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } } @Override public CharSequence convertResultToString(Object resultValue) { if (resultValue instanceof AutocompletePrediction) { return ((AutocompletePrediction) resultValue).getDescription(); } else { return super.convertResultToString(resultValue); } } }; } private ArrayList<AutocompletePrediction> getAutocomplete(CharSequence constraint) { if (mGoogleApiClient.isConnected()) { PendingResult<AutocompletePredictionBuffer> results = Places.GeoDataApi .getAutocompletePredictions(mGoogleApiClient, constraint.toString(), mBounds, mPlaceFilter); AutocompletePredictionBuffer autocompletePredictions = results .await(60, TimeUnit.SECONDS); final Status status = autocompletePredictions.getStatus(); if (!status.isSuccess()) { Toast.makeText(getContext(), "Error contacting API: " + status.toString(), Toast.LENGTH_SHORT).show(); autocompletePredictions.release(); return null; } return DataBufferUtils.freezeAndClose(autocompletePredictions); } return null; } } 

Mirando la documentación:

Public abstract PendingResult getAutocompletePredictions (cliente GoogleApiClient, consulta String, límites LatLngBounds, filtro AutocompleteFilter) Devuelve predicciones de autocompletado para una consulta basada en los nombres y direcciones de lugares. Para obtener más información, consulte la guía del desarrollador.

Este método realiza una búsqueda de red.

El acceso a este método está sujeto a restricciones de cuota. Consulte Límites de uso para obtener más detalles.

Parámetros

Consulta La cadena de consulta para la que se deben buscar las predicciones de autocompletar.

Límites A límites geográficos. Si está presente, las predicciones devueltas tendrán sesgo hacia lugares en esta área.

Filter Filtro que se utiliza para restringir las predicciones devueltas. Si es nulo, se utilizará un filtro sin restricciones.

La descripción de "límites" es devolver predicciones sesgadas . Por lo tanto, no se filtran, sino que se basan en estos límites. Esto significa que los resultados dentro del límite deben tener prioridad más alta, pero éstos no serán los únicos resultados.

El código que has escrito es correcto. También lo había hecho pero nunca lo intenté con límites. He comprobado con los límites y pasado por la documentación, su escrito que dará resultados sesgados que significa que dará resultados con prioridad a la dentro de los límites dados.

Aquí está el enlace de documentación

https://developers.google.com/places/android-api/autocomplete

  • Google google maps agrega al marcador propia etiqueta
  • Establecer una vista de texto encima de un fragmento de mapa
  • Google Place API para espacios de estacionamiento
  • NavigationControl, mapTypeControl y scaleControl van detrás del mapa
  • Cómo implementar mapa arrastrable como uber android, Actualizar con cambiar ubicación
  • ¿Cómo persistir Marcador de Google API Android v2?
  • Cómo inhabilitar edificios en 3D con la API de Google Maps para Android v2
  • Dar valor doble a Geopoint en superposiciones de GoogleMap
  • Google Maps no puede agregar referencia a los servicios de Google Play
  • Multiple MapActivitys en la pila
  • Buscar una ubicación en google maps sin dar sus geo-coordenadas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.