Фильтровать результаты Google Мест на карте по типу в Android - PullRequest
0 голосов
/ 31 мая 2018

Я использую API мест Google, особенно PlaceAutocomplete, в своем приложении для Android.

Мне нужно отфильтровать результаты, чтобы отображать только школы.

Я вижу эти вопросы и ответы, которые кажутсябудь то, что я хочу, но это только для использования в Интернете: Может ли Google Places API тянуть определенные типы мест, например школы, без местоположения?

Я не знаю, как сделать то же самоес Android SDK ...

Я пытаюсь это:

val typeFilter = AutocompleteFilter.Builder()
                    .setTypeFilter(Place.TYPE_SCHOOL)
                    .build()

            val intent = PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_OVERLAY)
                    .setFilter(typeFilter)
                    .build(this)

            startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE)

Но это не работает

Любая помощь ???

Спасибо, Fab

1 Ответ

0 голосов
/ 01 июня 2018

К сожалению, автозаполнение мест не поддерживает детализированные типы в фильтре.Если вы посмотрите документацию, вы увидите, что поддерживаются только следующие типы:

  • TYPE_FILTER_ADDRESS
  • TYPE_FILTER_CITIES
  • TYPE_FILTER_ESTABLISHMENT
  • TYPE_FILTER_GEOCODE
  • TYPE_FILTER_REGIONS

source: https://developers.google.com/android/reference/com/google/android/gms/location/places/AutocompleteFilter

Та же ситуация с веб-службой автозаполнения API Places API:

https://developers.google.com/places/web-service/autocomplete#place_types

В трекере проблем Google очень старый запрос на добавление фильтра детальных типов вместо автозаполнения.Вы можете увидеть этот запрос здесь:

https://issuetracker.google.com/issues/35820774

Не стесняйтесь пометить его, чтобы добавить свой голос и подписаться на уведомления.

Если вы заинтересованы в реализации вебвызовы службы, аналогичные упомянутому вопросу, посмотрите на Java Client для Google Maps Services:

https://github.com/googlemaps/google-maps-services-java

С помощью этой библиотеки вы можете реализовать функцию текстового поиска в Java.Что-то вроде

GeoApiContext context = new GeoApiContext.Builder()
    .apiKey("AIza......")
    .build();

TextSearchRequest req = PlacesApi.textSearchQuery(context, "Springfield Elementary");
try {
    PlacesSearchResponse resp = req.type(PlaceType.SCHOOL).await();
    if (resp.results != null && resp.results.length > 0) {
        for (PlacesSearchResult r : resp.results) {
            //TODO: implement logic for places
        }
    }
} catch(Exception e) {
    Log.e(TAG, "Error getting places", e);
}

Надеюсь, это поможет!

...