我有一个应用程序,它会从Google Places API返回一个地点列表。当用户单击地图上的标记(表示地点)时,会弹出一个对话框,其中包含有关该地点的详细信息。我还想显示一个地方的照片(如果有的话)。
我从这里知道Place Photos API:https://developers.google.com/places/documentation/photos#place_photo_response
我可以从地方详细信息响应中检索photo_reference,我可以将其传递给Place Photos API请求,以及传感器,maxwidth / maxheight和我的API密钥。我遇到的问题是从响应中获取照片。如何将照片对象检索为位图,以便我可以在对话框中显示它。
答案 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。