java - 如何使用 GeoDataApi.getPlaceById?

标签 java android google-places-api

问题: 创建 Place 的最干净的方法是什么?来自 ID 字符串的对象?

我想做一些place硬编码 ID 之外的对象。 想像 Place place1 = new Place("ChIJS_zBNNbXAhURy-FuRT5ib9k") ,但这当然行不通。

我遇到了 GeoDataApi.getPlaceById ,但文档令人困惑。

该 API 通常用于查找用户输入的任何内容(可选地使用自动完成),但我需要更小更清晰的东西(想想:单元测试目的)


我的研究: How to get a Place by ID

To get a place by ID, call GeoDataApi.getPlaceById, passing one or more place IDs.

The API returns a PlaceBuffer in a PendingResult. The PlaceBuffer contains a list of Place objects that match the supplied place IDs.

文档:

Place (需要的对象)

PlaceBuffer (可转换为地点)

PendingResult

getPlaceById (返回一个 PendingResult)


我遇到的问题: 我找不到一种优雅的方式来转换 PendingResultPlaceBuffer .

The API returns a PlaceBuffer in a PendingResult.

...

The final result object from a PendingResult<R> is of type R, which can be retrieved in one of two ways.

  • via blocking calls to await(), or await(long, TimeUnit), or
  • via a callback by passing in an object implementing interface ResultCallback to setResultCallback(ResultCallback).

一个回调太乱了,我找不到任何使用await的代码从中学习。

最佳答案

你可以很容易地把一个 PendingResult来自 getPlaceById进入PlaceBuffer .您只需调用 await()方法:

PendingResult<PlaceBuffer> result = Places.GeoDataApi.getPlaceById(
        mGoogleApiClient, placeId);
PlaceBuffer placeBuffer = result.await();

(如果您愿意,您当然可以在一行中完成。)

有调用GeoDataApi.getPlaceByID的例子和 PendingResult<PlaceBuffer>.awaithttps://github.com/googlesamples/android-play-places .

关于java - 如何使用 GeoDataApi.getPlaceById?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38163091/

相关文章:

java - 如何在不刷新整个 Pane 的情况下附加到 JEditorPane?

java - 我如何从 ClassRunner 中获取 JUnit 正在运行测试用例的测试类实例?

android - 这个简单的布局有什么问题?

javascript - Google Places 覆盖自动完成关闭

android - flutter 的google_maps地点在搜索后不显示地点

java - 注意:未定义的属性:http://localhost:8080/JavaBridge/java/Java.inc 第 1994 行中的 java_Client::$cancelProxyCreationTag

java - 注册数据未发送到 mySQL 数据库

Android Inject Dependency (Dagger 2) Inside Fragment 使用@ContributesAndroidInjector

python - 如何从 Google Plus 企业列表中提取类别?

java - 我如何从我的类中启动构造函数?