我已成功将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的地方
答案 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以获取该课程的完整参考。