我已经在我的应用程序中成功实现了 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) error: incompatible types: int cannot be converted to PlaceFilter
我看过一些 Stackoverflow 帖子,但它们已经很老了,所以我不知道它们是否仍然适用。他们都说过滤器还没有在 google places 中完全实现。现在还是这样吗?如果没有,有人可以帮忙吗
谢谢
更新 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,请引用我在评论中上传的屏幕截图(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);
我不明白如何使用 places matches bool val
最佳答案
第二个参数需要是 PlaceFilter
对象而不是 int
。
List<String> filters = new ArrayList<>();
filters.add(Place.TYPE_LIBRARY);
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(googleApiClient, PlaceFilter(true, filters));
PlaceFilter
构造函数的第一个参数决定是否只过滤现在开放的地点。
参见 here为类的完整引用。
关于java - Google 放置 getPlaceID 返回非空数组但过滤器返回零结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076533/