2013-02-13 1 views
2

У меня есть приложение, которое возвращает список мест из API Google Адресов. Когда пользователь нажимает на маркер (представляющий место) на карте, появляется диалоговое окно с подробностями об этом месте. Я также хотел бы показать фотографию места (если таковой существует).Android: Как отображать фотографии из Google Places API

Я сознаю Фотографии API здесь: https://developers.google.com/places/documentation/photos#place_photo_response

Я могу извлечь photo_reference из ответа Место подробности, и я могу передать, что запрос API Фотографии, вместе с датчиком, MaxWidth/maxheight и мой ключ API. Проблема, с которой я сталкиваюсь, - получить фотографию из ответа. Как получить фотообъект в виде растрового изображения, чтобы я мог отображать его в диалоговом окне.

ответ

5

Я нашел решение после нескольких часов разочарования.

По вызову getContentType() по ответу от API я смог определить, что ответ представляет собой просто изображение определенного типа. В моем случае я нашел его «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

Последняя версия службы Google Play (7.8) включает в себя возможность получить фотографии, связанные с местом - см. here для javadoc.

Смежные вопросы