Im работает над Android-приложением, в котором я хочу, чтобы пользователь искал данные (которые предоставляет мое приложение) в определенном городе. Для этого у меня есть поле поиска, в котором пользователь может ввести название города. Я использую API Google Адресов для получения результатов автозаполнения следующим образом:
PendingResult results =
Places.GeoDataApi
.getAutocompletePredictions(mGoogleApiClient, searchQuery,
mBounds, mPlaceFilter);
В моем случае mBounds представляет границы Германии, потому что Im интересуется только городами в Германии, и я не хочу, чтобы города в других странах отображались в предсказаниях автозаполнения. Теперь, очевидно, Германия не идеальная площадь, поэтому mBounds содержит всю Германию, а также части окружающих стран, таких как Швейцария. Итак, вопросы: как я могу удалить все предсказания автозаполнения для мест, которые не в Германии?
Моя первая мысль заключалась в том, чтобы использовать фильтр места, чтобы получить прогнозы только для одной страны. Согласно документации, это действительно можно использовать для фильтрации по регионам (например, по странам), но, к сожалению, эта специальная фильтрация не поддерживается в Google Адресах API для Android (согласно документации).
Коллекция типов (регионов) не поддерживается в API Google Адресов для Android.
Там также нет никакой возможности получить страну Place либо из AutocompletePrediction или Place. Поэтому я даже не могу сделать фильтрацию.
Единственные решения, о которых я могу думать, следующие:
-
Получите Place из прогноза и используйте API Geocoder API для извлечения Address, и из этого вы получите страну и выполните фильтрацию. Однако это дополнительный сетевой вызов (и другой против моей квоты), который кажется совершенно ненужным, поскольку мне кажется, что объект AutocompletePrediction или, по крайней мере, Place объекты должны знать, в какой стране это место. В конце концов, его часть результатов описания /toString этих объектов. Тем не менее, это просто строка типа "Мюнхен, Германия".
-
Используйте строку описания, указанную в 1., чтобы определить страну. Однако это похоже на еще худшее решение, чем 1, поскольку описание локализовано в зависимости от локали пользователей, которая может быть всем. Так что просто поиск "Германии" не будет выполнять эту работу.
Я был бы признателен за решение, которое лучше, чем я предложил до сих пор. Я не могу представить, что нет лучшего способа сделать это. Любые идеи?