Как использовать API-интерфейс Android Places AutocompleteFilter

Я пытаюсь внедрить новый API-интерфейс Places для Android в моем приложении, и я не могу понять, как установить фильтр для запроса. Вот мой код.

LatLng southWest = new LatLng(85, -180);
LatLng northEast = new LatLng(-85, 180);
LatLngBounds bounds = new LatLngBounds(southWest, northEast);
AutocompleteFilter filter = AutocompleteFilter.create(WHAT SHOULD GO HERE?);
PendingResult result = Places.GeoDataApi.getAutocompletePredictions(mGoogleApiClient,
            search.getText().toString(), bounds, filter);

Как вы можете видеть, я следил за документацией, представленной google здесь, но я не говорю о том, как реализовать фильтр после прочтения Справочник API Я все еще не могу понять, как реализовать API.

Мне нужна помощь в определении того, что должно входить в качестве параметра для AutocompleteFilter.create() для API. Я хочу фильтровать данные по городам

Спасибо

Ответы

Ответ 1

Он работает в Google Play Service 9.4.

AutocompleteFilter filter = new AutocompleteFilter.Builder()
        .setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES)
        .build();

Ответ 2

Из документации:

Таблица 3: Поддерживаемые типы запросов автозаполнения

Вы можете ограничить результаты запроса автозаполнения места определенным типом, передав параметр types. Параметр указывает тип или коллекцию типов, как указано в приведенных ниже типах. Если ничего не указано, все типы возвращаются. В общем случае допускается только один тип. Исключением является то, что вы можете безопасно смешивать типы геокодов и типов, но обратите внимание, что это будет иметь тот же эффект, что и указание типов. Поддерживаемые типы:

геокод инструктирует службу автозаполнения места возвращать только результаты геокодирования, а не бизнес-результаты. Как правило, вы используете этот запрос для устранения неоднозначности результатов, когда указанное местоположение может быть неопределенным. адрес указывает службе автозаполнения места, чтобы возвращать только результаты геокодирования с точным адресом. Как правило, вы используете этот запрос, когда знаете, что пользователь будет искать полностью указанный адрес. учреждение инструктирует службу автозаполнения места возвращать только бизнес-результаты. коллекция типов (регионов) указывает службе Places возвращать любой результат, соответствующий следующим типам: местонахождение sublocality Почтовый индекс страна administrative_area_level_1 administrative_area_level_2 коллекция типов (городов) дает указание службе "Места" возвращать результаты, соответствующие локальности или Administrative_area_level_3.

источник: https://developers.google.com/places/supported_types

код:

    List<Integer> filterTypes = new ArrayList<Integer>();
    filterTypes.add( Place.TYPE_ESTABLISHMENT );

Ответ 3

Вот как вам нужно устанавливать фильтры в вашем API автозаполнения.

    List<Integer> filters = new ArrayList<Integer>();
        filters.add(Place.TYPE_ADMINISTRATIVE_AREA_LEVEL_1);
    mAutocompleteFilter = AutocompleteFilter.create(filters);
    mGeoLocationAdapter = new GeoLocationAdapter(this,
            android.R.layout.simple_list_item_1,
            latLngBounds,
            mAutocompleteFilter);

В Android поддерживаются только несколько типов, Вы получите

AutocompletePredictionBuffer{status=Status{statusCode=NETWORK_ERROR, resolution=null}}

если вы используете неподдерживаемые типы в качестве фильтров.

см. эту ссылку для поддерживаемых типов фильтров.

https://developers.google.com/places/supported_types#table3

Ответ 4

Если вы используете службы Google Play версии 8.4.0, вы можете использовать подкласс AutocompleteFilter.Builder для создания фильтра.

Это проще в использовании, так как вам не нужно вручную создавать список мест.

mAutocompleteFilter = AutocompleteFilter.Builder().
    setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES).build();
mGeoLocationAdapter = new GeoLocationAdapter(this,
        android.R.layout.simple_list_item_1,
        latLngBounds,
        mAutocompleteFilter);

Помните, что в настоящее время возникают проблемы совместимости при установке сервисов Google Play версии 8.4.0. Если вы столкнулись с этой проблемой, вы можете следить за ней , но я предлагаю вернуться к статическому устаревшему AutocompleteFilter.create(), если вы боретесь.