Google 放置 getPlaceID 返回非空数组,但过滤器返回零结果

Posted

技术标签:

【中文标题】Google 放置 getPlaceID 返回非空数组,但过滤器返回零结果【英文标题】:Google places getPlaceID returns non null array yet filter returns zero results 【发布时间】:2016-10-16 23:15:26 【问题描述】:

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

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) 错误:不兼容的类型:int 无法转换为 PlaceFilter

我看过一些 *** 帖子,但它们已经很老了,所以我不知道它们是否成立。他们都说过滤器还没有在谷歌地方完全实现。还是这样吗?如果没有,请有人帮忙

谢谢

更新 1:

所以我找到了this link 来查找每种类型的 placeID: 只是为了测试我这样做(基本上它应该再次打印我的文本框中的所有位置,就像它是空的一样):

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,请参阅我在评论中上传的屏幕截图(*** 不允许我再上传链接)。所以它给了我 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);

我不明白如何使用 places 匹配 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 以获取该类的完整参考。

【讨论】:

我应该如何编写这段代码?因为你上面的建议是如何创建一个数组的,添加了一些类型(我理解)但是这里的 placeID 是什么? 并且过滤器从不使用 我的错误应该是过滤器。我更新了答案。 我现在更了解这一点了。请参考我更新的 OP 帖子 尝试PlaceFilter类中的其他方法。看看getPlaceIds(),它说“返回此过滤器允许的一组地点 ID,如果不按地点 ID 进行过滤,则返回一个空集。”看起来您在使用null 过滤器获取结果后使用matches(Place place) 过滤结果。

以上是关于Google 放置 getPlaceID 返回非空数组,但过滤器返回零结果的主要内容,如果未能解决你的问题,请参考以下文章

在哪里放置 Google Geocoding API 的 API 密钥?

google 的缓存策略将 api 放置在结果附近。

获取 Google 表格列中的最后一个非空单元格

Google表格中的查询功能-根据另一列获取一列中的非空最后一个单元格

Google Maps API v3 返回 ZERO_RESULTS 但 Maps.Google.com 显示正常

GraphQL 查询 - 抑制非空错误并返回部分数据