Android:如何显示Google Places API中的照片

时间:2013-02-13 21:35:36

标签: android google-places

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

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

我可以从地方详细信息响应中检索photo_reference,我可以将其传递给Place Photos API请求,以及传感器,maxwidth / maxheight和我的API密钥。我遇到的问题是从响应中获取照片。如何将照片对象检索为位图,以便我可以在对话框中显示它。

2 个答案:

答案 0 :(得分:6)

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

通过API的响应调用getContentType(),我能够确定响应只是给定类型的图像。在我的情况下,我发现它是“text / jpeg”。您可以致电InputStream来检索内容的getContent()

BitmapFactory课程允许您将InputStream解码为Bitmap

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张照片。您无法保证将“最佳”照片发回。在我的情况下,我采取第一个。

答案 1 :(得分:1)

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