Ограничить поиск автозаполнения в определенной стране в Google Адресах Android API
Моя цель - ограничить результаты Autocomplete из API Google Адресов Google в той или иной стране (США).
Я использую следующий API:
PendingResult<AutocompletePredictionBuffer> results =
Places.GeoDataApi
.getAutocompletePredictions(mGoogleApiClient, constraint.toString(),
mBounds, mPlaceFilter);
Похоже, LatLngBounds должен выполнять эту работу.
-
Если да, то каковы значения LatLngBounds для Соединенных Штатов?
-
Какой источник вы использовали для получения LatLngBounds для страны?
-
LatLngBounds - это исправление, поэтому оно может включать и другие страны в результат. Что об этом?
-
Есть ли лучший способ сделать это?
Ответы
Ответ 1
Начиная с Google Play Services v9.6, вы можете установить фильтр страны для своих предложений автозаполнения. Убедитесь, что версия Play Services не менее 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);
Вы можете изменить коды стран, используя их ISO 'Aplha 2' Codes
Ответ 2
Если вы используете PlaceAutocompleteFragment, вы можете установить его так:
AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
.setTypeFilter(Place.TYPE_COUNTRY)
.setCountry("US")
.build();
mAutocompleteFragment.setFilter(autocompleteFilter);
Ответ 3
Определение метода конструктора LatLngBounds выглядит следующим образом:
LatLngBounds (LatLng southwest, LatLng northeast)
то есть. он берет два значения LatLng один для юго-западного расположения границы, а другой - северо-восточное расположение границы, а две другие точки прямоугольника вычисляются тривиально.
If yes, then what are the values of LatLngBounds for United States?
мое грубое предположение, если я не ошибаюсь, значения SouthLaw LatLng будут 32.6393, -117.004304
и северо-восточные значения LatLng были бы 44.901184, -67.32254 для США.
Which source did you use to get LatLngBounds for a country?
Я обычно использую http://www.findlatitudeandlongitude.com/, чтобы проверить эти значения LatLng, поместив маркер в нужные места.
LatLngBounds is a rectange - so it can include other countries in the result as well. What about that?
Да, вы правы, приведенные выше оценки будут чисто прямоугольными, и невозможно ограничить результаты только США, используя эти границы.
Это связано с тем, что прямоугольник [границы] будет вычисляться с использованием двух точек latlng [SE и NW], которые мы предоставляем конструктору, и другие две точки будут вычисляться тривиально.
Is there a better way to do it?
Да, вы могли бы использовать API веб-сервисов Google Places. В руководстве по обучению объясняется, как использовать API.
http://codetheory.in/google-place-api-autocomplete-service-in-android-application/
Вы можете использовать типы адресов и компоненты адреса, чтобы ограничить результаты с помощью этого API так, как вы пожелаете:
https://developers.google.com/maps/documentation/geocoding/intro#Types
Вы можете ограничить по странам, регионам и другим типам типы, указанные в ссылке.
Надеюсь, что это поможет!
P.S: Если кто-то может ответить, как ограничить использование Bounds в API Служб Службы в конкретной стране, это было бы действительно здорово!!
Ответ 4
Для нового Place api 2019, Вы должны сделать это
FindAutocompletePredictionsRequest request =
FindAutocompletePredictionsRequest.builder()
.setLocationBias(bounds)
.setCountry("au") //to set country only for e.g australia
.setTypeFilter(TypeFilter.ADDRESS)
.setSessionToken(token)
.setQuery(query)
.build();