Intereting Posts
Дополнение / смещение диаграммы настройки MPAndroidChart Установить ширину и высоту ImageView в программном виде на виджет Создайте приложение для Android, которое действует как ярлык для нашего мобильного сайта Разница между новичком и новичком в Android Где я могу найти исходный код Android в Интернете? Изменение фрагментов и ориентации Ресурсы, указанные в манифесте, не могут изменяться по конфигурации Темы Android – определение цветов в пользовательских тем Кинжал 2 – Почему это цикл зависимости? Как реализовать контекстное меню при нажатии клавиши, а не длительный щелчок / нажатие PlacePicker.IntentBuilder закрывается сразу после открытия Android ListView добавляет элементы в начало без просмотра списка прокрутки Как повлиять на строку в Android Textview LoaderManager с несколькими загрузчиками: как получить правильный загрузчик курсора Предоставление разрешений для проявления проекта Android .aar library

Поиск местоположений в определенном городе в Google Местах Apis

Я использую Google Places Apis для фильтрации результатов в определенном городе. Я могу фильтровать результаты. Но это также показывает результаты на стороне этого города. Например, если я установил LatLngBounds города DELHI и искал местоположение в городе NEWYORK. Это также дает мне результат города NEWYORK (но LatLng NEWYORK не лежит внутри DELHI).

Как я могу ограничить результаты в определенном городе?

Это мой класс 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; } } 

Solutions Collecting From Web of "Поиск местоположений в определенном городе в Google Местах Apis"

Посмотрев документацию:

Public abstract PendingResult getAutocompletePredictions (клиент GoogleApiClient, строковый запрос, границы LatLngBounds, фильтр AutocompleteFilter) Возвращает предсказания автозаполнения для запроса на основе имен и адресов мест. Для получения дополнительной информации см. Руководство разработчика.

Этот метод выполняет поиск в сети.

Доступ к этому методу зависит от ограничений квот. Дополнительные сведения см. В разделе Ограничения использования.

параметры

Query Строка запроса, для которой должны быть выбраны предсказания автозаполнения.

Границы . Географические границы. Если они есть, возвращаемые прогнозы будут предвзятыми по отношению к местам в этой области.

Filter Фильтр, используемый для ограничения возвращаемых прогнозов. Если null, будет использоваться фильтр без ограничений.

Описание «границ» – это возвращение предвзятых прогнозов. Таким образом, они не фильтруются, а предвзяты, основываясь на этих границах. Это означает, что результаты внутри границы должны иметь более высокий приоритет, но это не будет единственным результатом.

Код, который вы написали, прав. Я также сделал это, но никогда не пробовал с ограничениями. Я проверил с ограничениями и просмотрел документацию, написав, что он даст предвзятые результаты, что означает, что он даст результаты с приоритетом в пределах данной границы.

Вот ссылка на документацию

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