3

我有一个应用程序从 Google Places API 返回一个地点列表。当用户单击地图上的标记(代表地点)时,会弹出一个对话框,其中包含有关该地点的详细信息。我还想显示该地点的照片(如果存在)。

我从这里知道 Place Photos API:https ://developers.google.com/places/documentation/photos#place_photo_response

我可以从 Place Details 响应中检索 photo_reference,并将它与传感器、maxwidth/maxheight 和我的 API 密钥一起传递给 Place Photos API 请求。我遇到的问题是从响应中获取照片。如何将照片对象检索为位图,以便可以在对话框中显示它。

4

2 回答 2

7

经过几个小时的挫折,我找到了解决方案。

通过在 API 返回的响应上调用getContentType(),我能够识别出响应只是给定类型的图像。就我而言,我发现它是“text/jpeg”。InputStream您可以通过调用来检索内容的getContent()

BitmapFactory类允许您将 a 解码InputStreamBitmap.

Bitmap photo = BitmapFactory.decodeStream(request.execute().getContent());

为了显示这个图像,我首先需要为DialogBuilder.

LayoutInflater factory = LayoutInflater.from(mapView.getContext());
final View view = factory.inflate(R.layout.dialog_layout, null);
dialog.setView(view);

接下来,我获取照片响应并将其添加到ImageView布局中(已在 XML 中定义):

LinearLayout ll = (LinearLayout) view.findViewById(R.id.dialogLayout);
ImageView imageView = (ImageView) ll.findViewById(R.id.placePhoto);
imageView.setImageBitmap(photo);

请务必注意,“地点详细信息”响应最多可以发回 10 张照片。您不能保证“最佳”照片会被退回。就我而言,我选择第一个。

于 2013-02-13T23:43:05.233 回答
1

最新版本的 Google Play 服务 (7.8) 包括获取与地点相关联的照片的功能 - 请参阅此处获取 javadoc。

于 2015-08-14T10:01:29.863 回答