2016-10-16 2 views
1

Я успешно применил места Google в своем приложении. Теперь я пытаюсь отфильтровать результаты, вот мой массив результатов.Google places getPlaceID возвращает ненулевой массив, но фильтр возвращает нулевые результаты

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(googleApiClient, null); 

Второй параметр для getCurrentPlace является опцией фильтра. Я использовал null, однако я понятия не имею, как добавлять фильтры к результатам. Я посмотрел на place types.

Как я библиотеку рядом я попытался это:

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(googleApiClient, Place.TYPE_LIBRARY); 

Однако я получаю ошибку

Error:(98, 118) error: incompatible types: int cannot be converted to PlaceFilter

Я смотрел на некоторые должности StackOverflow, но они довольно так что я не знаю, верят ли они больше. Все они говорят, что фильтры еще не полностью реализованы в местах Google. Это все еще так? если нет, то может кто-то пожалуйста, помогите

Благодаря

Update 1:

Так я нашел this link найти placeIDs для каждого типа: Только для тестирования я сделал это (в основном он должен печатать все места в моем текстовом поле снова, как если бы он был пустой):

ArrayList<String> filter = new ArrayList<>(); 
    for (int i =0; i< 5000; i++){ 
     filter.add(String.valueOf(i)); 
    } 

    PlaceFilter filterClosed = new PlaceFilter(false, filter); 

, а затем применять его:

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(googleApiClient, filterClosed); 

Однако я больше не располагаю места в текстовом поле, я получаю любую информацию о местоположении. Любая идея почему?

Update 2 Работы с информацией, предоставленной вами в вашем комментарии, я получил placeIDs используя метод GetId, пожалуйста, обратитесь к скриншоту я загрузил на моем комментарии (StackOverflow не позволяет мне загружать больше ссылок). Итак, он дает мне идентификаторы, почему он ничего не возвращает, когда я применяю фильтры к результату? может ли кто-нибудь еще попробовать это? Вот мой код:

PlaceFilter filterClosed = null; 
    ArrayList<String> filter = new ArrayList<>(); 
    for (int i =0; i < 45; i++){ 
     filter.add(String.valueOf(i)); 
    } 
    filterClosed = new PlaceFilter(false, filter); 
    txtLocation.setText(String.valueOf(filterClosed.getPlaceIds())); 



    PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(googleApiClient, filterClosed); 

Я не понимаю, как использовать места соответствует BOOL VAL

ответ

1

Второй аргумент должен быть PlaceFilter объект не int.

List<String> filters = new ArrayList<>(); 
filters.add(Place.TYPE_LIBRARY); 
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(googleApiClient, PlaceFilter(true, filters)); 

Первый аргумент в PlaceFilter конструктор определяет, следует ли фильтровать только места, которые открыты сейчас или нет.

См. here для полной справки для класса.

+0

Как именно я должен писать этот код? потому что, как вы предложили выше, вы создали массив, добавили некоторые типы (которые я понимаю). Но что здесь placeIDs? – ElegantCode

+0

и фильтры никогда не используются – ElegantCode

+0

Моя ошибка: это должны были быть фильтры. Я обновил ответ. –

Смежные вопросы