我尝试过以下代码。
ArrayList<String> filters = new ArrayList<>();
filters.add(Place.TYPE_ATM + "");
filters.add(Place.TYPE_BANK + "");
filters.add(Place.TYPE_BAR + "");
filters.add(Place.TYPE_BUS_STATION + "");
filters.add(Place.TYPE_DOCTOR + "");
filters.add(Place.TYPE_FOOD + "");
filters.add(Place.TYPE_ACCOUNTING + "");
filters.add(Place.TYPE_AIRPORT + "");
filters.add(Place.TYPE_RESTAURANT + "");
filters.add("restaurant");
filters.add("establishment");
filters.add(Place.TYPE_STORE + "");
PlaceFilter placeFilter = new PlaceFilter(false, filters);
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
.getCurrentPlace(mGoogleApiClient, placeFilter);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
Log.v("App", "1. likelyPlaces.getCount() : " + likelyPlaces.getCount());
for (PlaceLikelihood placeLikelihood : likelyPlaces) {
for(int i : placeLikelihood.getPlace().getPlaceTypes()){
Log.i("App", String.format("Place '%s' with " +
"likelihood: %g "+"type : %d",
placeLikelihood.getPlace().getName(),
placeLikelihood.getLikelihood(), i));
}
}
likelyPlaces.release();
}
});
将likelyPlaces.getCount()
返回为0。
但如果我将PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
.getCurrentPlace(mGoogleApiClient, placeFilter);
更改为PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
.getCurrentPlace(mGoogleApiClient, null);
,我可以使用地方类型34, 1013, 38, 79, 88, 7
获得20个地方。
所以我的问题是我是以错误的方式发起
PlaceFilter
吗?如果是的话 我应该如何将PlaceFilter
与PlaceDetectionApi
一起使用?另外,我如何获得所有地方的地方照片?
任何帮助都会非常值得注意。
答案 0 :(得分:0)
尝试使用Integer值。看看下面的链接
https://developers.google.com/android/reference/com/google/android/gms/location/places/Place
答案 1 :(得分:0)
PlaceFilter构造函数接受地点ID而非地点类型。
PlaceFilter(boolean requireOpenNow,Collection restrictToPlaceIds)
这意味着您无法使用PlaceDetectionApi按地点类型过滤地点。您只能将结果限制为传递给api调用的PlaceFilter中的给定地点ID。