如何使用GeoDataApi.getPlaceById?

时间:2016-07-02 18:07:28

标签: java android google-places-api

问题: 从ID字符串创建$date对象的最简洁方法是什么?

我想用硬编码的ID制作一些Place个对象。 想想像place这样的东西,但当然不起作用。

我遇到Place place1 = new Place("ChIJS_zBNNbXAhURy-FuRT5ib9k"),但文档令人困惑。

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

我的研究 How to get a Place by ID

  

要按ID获取地点,请致电GeoDataApi.getPlaceById,传递一个或多个地点ID。

     

API会在PlaceBuffer中返回PendingResultPlaceBuffer包含与提供的地点ID匹配的Place个对象列表。

文档:

Place (需要的对象)

PlaceBuffer (可转换为地方)

PendingResult

getPlaceById (返回PendingResult)

我坚持使用: 我找不到一种优雅的方式将GeoDataApi.getPlaceById转换为PendingResult

  

API会在PlaceBuffer中返回PlaceBuffer

...

  

PendingResult的最终结果对象属于PendingResult<R>类型,可以通过以下两种方式之一进行检索。

     
      
  • 通过阻止对Rawait()
  • 的来电   
  • 通过将实现接口await(long, TimeUnit)的对象传递给ResultCallback来通过回调。
  •   

回调过于混乱,我找不到任何使用setResultCallback(ResultCallback)来学习的代码。

1 个答案:

答案 0 :(得分:1)

您可以非常轻松地将PendingResultgetPlaceById转变为PlaceBuffer。您只需调用await()方法:

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

(如果你愿意,你当然可以在一行中这样做。)

https://github.com/googlesamples/android-play-places中调用GeoDataApi.getPlaceByIDPendingResult<PlaceBuffer>.await的示例。