Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用GeoDataApi.getPlaceById?_Java_Android_Google Places Api - Fatal编程技术网

Java 如何使用GeoDataApi.getPlaceById?

Java 如何使用GeoDataApi.getPlaceById?,java,android,google-places-api,Java,Android,Google Places Api,问题: 从ID字符串创建Place对象的最干净方法是什么 我想用硬编码的ID制作一些place对象。 想一想类似于place1=newplace(“ChIJS_zBNNbXAhURy-FuRT5ib9k”),但这当然行不通 我遇到了GeoDataApi.getPlaceById,但是文档很混乱 该API通常用于查找用户输入的任何内容(可以选择使用自动完成),但我需要更小更干净的东西(想想:单元测试的目的) 我的研究: 要通过ID获取位置,请调用并传递一个或多个位置ID 该API在中返回一个。

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

我想用硬编码的ID制作一些
place
对象。 想一想类似于
place1=newplace(“ChIJS_zBNNbXAhURy-FuRT5ib9k”)
,但这当然行不通

我遇到了
GeoDataApi.getPlaceById
,但是文档很混乱

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


我的研究:

要通过ID获取位置,请调用并传递一个或多个位置ID

该API在中返回一个。包含与提供的位置ID匹配的对象列表

文件:

(所需对象)

(可转换到一个地方)

(返回一个pendingreult)


我的困境是什么: 我找不到一种优雅的方法将
pendingreult
转换为
PlaceBuffer

API在
pendingreult
中返回一个
PlaceBuffer

来自
pendingreult
的最终结果对象的类型为
R
,可以通过以下两种方式之一进行检索

  • 通过阻止调用
    await()
    ,或
    await(long,TimeUnit)
    ,或
  • 通过回调,将对象实现接口
    ResultCallback
    传递到
    setResultCallback(ResultCallback)

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

您可以很容易地将
pendingreult
getPlaceById
转换为
PlaceBuffer
。只需调用
await()
方法:

PendingResult<PlaceBuffer> result = Places.GeoDataApi.getPlaceById(
        mGoogleApiClient, placeId);
PlaceBuffer placeBuffer = result.await();
pendingreult result=Places.GeoDataApi.getPlaceById(
mGoogleApiClient,placeId);
PlaceBuffer PlaceBuffer=result.await();
(如果您愿意,您当然可以在一行中完成。)


这里有调用
GeoDataApi.getPlaceByID
pendingreult.await
in的示例。

我在@xomena找到了一个示例,我已经看到并阅读了这个示例。一些
ctrl+f
可以帮助处理如此大的代码片段。这几乎没有帮助。
返回的结果对象可能有一个额外的中断故障模式。
-您如何处理它?与您在
PlaceBuffer中处理任何其他故障状态的方式相同。例如,
如果(!placeBuffer.getStatus().issucess()){reportErrorSomewhere(placeBuffer.getStatus().toString());}
注意:Pendingreult是旧的,请参阅API