【问题标题】:Using PlaceFilter with PlaceDetectionApi将 PlaceFilter 与 PlaceDetectionApi 一起使用
【发布时间】:2016-02-05 04:25:19
【问题描述】:

我已经尝试了以下代码。

    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);,我可以得到 20 个位置类型为 34, 1013, 38, 79, 88, 7 的地方。

所以我的问题是我是否以错误的方式启动 PlaceFilter?,如果是 我应该如何使用PlaceFilterPlaceDetectionApi

另外我怎样才能得到所有地方的地方照片?

任何帮助都将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    【讨论】:

    • Place.TYPE_ATM 这只是整数值,其值为6。请查看相同的链接了解更多详情。
    • 试试 filters.add(String.valueOf(Place.TYPE_ATM))。 PlaceFilters 使用 Parcelable,这可能会被误解。不是说它会起作用,但值得一试。
    【解决方案2】:

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

    PlaceFilter (boolean requireOpenNow, Collection restrictToPlaceIds)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多