Google将getPlaceID返回非null数组,但过滤器返回零结果

时间:2016-10-16 23:15:27

标签: java android geolocation google-places-api google-places

我已成功将Google地方应用到我的应用程序中。我现在正在尝试过滤结果,这是我的结果数组。

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

getCurrentPlace的第二个参数是过滤选项。我已经使用了null但是,我不知道如何在结果中添加过滤器。我看过place types

我附近有一个图书馆,我试过这个:

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

但是,我收到了错误

  

错误:(98,118)错误:不兼容的类型:int无法转换为PlaceFilter

我查看了一些Stackoverflow帖子,但它们已经很老了,所以我不知道它们是否真的存在了。所有人都说过滤器还没有完全在google地方实现。这仍然是这样吗?如果没有,有人可以请帮助

由于

更新1:

所以我发现this link找到每种类型的placeID: 只是为了测试我做了这个(基本上它应该再次打印我的文本框中的所有位置,如果它是null):

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);

然而我在文本框中没有任何位置,我收到任何位置信息。知道为什么吗?

更新2 使用您在评论中提供的信息,我使用getID方法获得了placeID,请参阅我在评论中上传的屏幕截图(stackoverflow不允许我上传任何链接)。所以它给我ID,为什么当我将过滤器应用于结果时它什么都不返回?请其他人试试这个吗?这是我的代码:

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 个答案:

答案 0 :(得分: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以获取该课程的完整参考。