问题:
创建 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 aPendingResult
. ThePlaceBuffer
contains a list ofPlace
objects that match the supplied place IDs.
文档:
Place (需要的对象)
PlaceBuffer (可转换为地点)
getPlaceById (返回一个 PendingResult)
我遇到的问题:
我找不到一种优雅的方式来转换 PendingResult
在PlaceBuffer
.
The API returns a
PlaceBuffer
in aPendingResult
.
...
The final result object from a
PendingResult<R>
is of typeR
, which can be retrieved in one of two ways.
- via blocking calls to
await()
, orawait(long, TimeUnit)
, or- via a callback by passing in an object implementing interface
ResultCallback
tosetResultCallback(ResultCallback)
.
一个回调太乱了,我找不到任何使用await
的代码从中学习。
最佳答案
你可以很容易地把一个 PendingResult
来自 getPlaceById
进入PlaceBuffer
.您只需调用 await()
方法:
PendingResult<PlaceBuffer> result = Places.GeoDataApi.getPlaceById(
mGoogleApiClient, placeId);
PlaceBuffer placeBuffer = result.await();
(如果您愿意,您当然可以在一行中完成。)
有调用GeoDataApi.getPlaceByID
的例子和 PendingResult<PlaceBuffer>.await
在 https://github.com/googlesamples/android-play-places .
关于java - 如何使用 GeoDataApi.getPlaceById?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38163091/