android:使用多个 place_id 调用 Google API .getPlaceById

android: calling Google API .getPlaceById with multiple place_id's

为了减少 API 调用的次数,我尝试通过一次传递多个 place_ids(最多 10 个)来查询地点详细信息。除了文档之外,我没有找到任何有用的信息。

https://developers.google.com/android/reference/com/google/android/gms/location/places/GeoDataApi.html#getPlaceById(com.google.android.gms.common.api.GoogleApiClient, java.lang.String...)

值得注意的是,构造函数是:

public abstract PendingResult<PlaceBuffer> getPlaceById (GoogleApiClient client, **String... placeIds**)

文档说:Returns 为每个给定的地点 ID 放置对象。

我在传递单个 place_id 时没有任何问题,但是当我传递一个以逗号分隔的 id 字符串时,所有这些都被认为是好的,我得到一个 status = "SUCCESS"但是缓冲区计数为 0.

有谁知道将多个 ID 传递给 getPlaceById() 的正确方法吗?

如果有帮助的话,这是我的代码:

    Places.GeoDataApi.getPlaceById(mGoogleApiClient, searchIds)
        .setResultCallback(new ResultCallback<PlaceBuffer>() {
            @Override
            public void onResult(PlaceBuffer places) {
                int cnt = places.getCount();
                if (places.getStatus().isSuccess() && places.getCount() > 0) {
                    for (int i=0; i < places.getCount(); i++) {
                        final Place myPlace = places.get(i);
                        Log.d("<< cache >> ", "Place found: " + myPlace.getName());
                    }
                } else {
                    Log.d("<< cache >> ", "Place not found");
                }
                places.release();
            }
    });

虽然我读过 String... 可以作为逗号分隔的字符串或字符串数​​组传递,但出于某种原因,getPlaceById 似乎需要一个数组。当我使用这段代码准备 place id 参数时,它工作正常:

    String search[] = new String[idsToSearch.size()];
    search = idsToSearch.toArray(search);

这是一个 varargs 的论点。你可以这样称呼它:

Places.GeoDataApi.getPlaceById(mGoogleApiClient, 
        "placeId1", "placeId2", "placeId3");

这个 SO 问题的更多细节:How does the Java array argument declaration syntax "..." work?