android:使用多个 place_id 调用 Google API .getPlaceById
android: calling Google API .getPlaceById with multiple place_id's
为了减少 API 调用的次数,我尝试通过一次传递多个 place_ids(最多 10 个)来查询地点详细信息。除了文档之外,我没有找到任何有用的信息。
值得注意的是,构造函数是:
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?
为了减少 API 调用的次数,我尝试通过一次传递多个 place_ids(最多 10 个)来查询地点详细信息。除了文档之外,我没有找到任何有用的信息。
值得注意的是,构造函数是:
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?