将PlaceFilter与PlaceDetectionApi一起使用

时间:2016-02-05 04:25:19

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

我尝试过以下代码。

    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吗?如果是的话   我应该如何将PlaceFilterPlaceDetectionApi一起使用?

     

另外,我如何获得所有地方的地方照片?

任何帮助都会非常值得注意。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

PlaceFilter构造函数接受地点ID而非地点类型。

PlaceFilter(boolean requireOpenNow,Collection restrictToPlaceIds)

这意味着您无法使用PlaceDetectionApi按地点类型过滤地点。您只能将结果限制为传递给api调用的PlaceFilter中的给定地点ID。