Place Photos (новое) позволяет добавлять в приложение высококачественный фотоконтент. Place Photos предоставляет доступ к миллионам фотографий, хранящихся в базе данных Places. Place Photos возвращает URI растрового изображения. Максимальный размер растрового изображения — 4800 на 4800 пикселей.
Запросы на размещение фотографий
Чтобы получить изображение места:
- Используйте функцию «Сведения о месте (новое)» для получения объекта
Place
с помощьюfetchPlace()
. Обязательно включите полеPlace.Field PHOTO_METADATAS
в список полей для включения в ответ объектаPlace
. - В
OnSuccessListener
дляFetchPlaceResponse
вызовитеPlace.getPhotoMetadas()
чтобы получить объект метаданных фотографии типаPhotoMetadata
из объекта ответаPlace
. - Создайте объект
FetchResolvedPhotoUriRequest
для выполнения запроса и передачи объекта метаданных фотографии, а также значений максимальной высоты, максимальной ширины или обоих. - Используйте
PlacesClient.fetchResolvedPhotoUri()
для запроса URI фотографии. - Добавьте
OnSuccessListener
и получите URI фотографии из объектаFetchResolvedPhotoUriResponse
.
Обязательные параметры
Обязательные параметры для FetchResolvedPhotoUriRequest
:
Метаданные фотографий
Объект метаданных фотографии, который необходимо вернуть.
Максимальная высота или максимальная ширина
Задаёт максимальную высоту и ширину возвращаемого изображения в пикселях. Если изображение меньше указанных значений, будет возвращено исходное изображение. Если изображение больше по одному из двух измерений, оно будет масштабировано до меньшего из двух измерений с сохранением исходного соотношения сторон. Свойства максимальной высоты и максимальной ширины принимают целые числа от 1 до 4800. Необходимо указать максимальную высоту, максимальную ширину или оба значения.
- Чтобы задать максимальный параметр высоты, вызовите метод
setMaxHeight()
при построении объектаFetchResolvedPhotoUriRequest
. - Чтобы задать максимальный параметр ширины, вызовите метод
setMaxWidth()
при построении объектаFetchResolvedPhotoUriRequest
.
- Чтобы задать максимальный параметр высоты, вызовите метод
Примеры фотографий мест
В следующем примере демонстрируется получение URI фотографии места.
// Define a Place ID. final String placeId = "INSERT_PLACE_ID_HERE"; // Specify fields. Requests for photos must always have the PHOTO_METADATAS field. final List<Place.Field> fields = Collections.singletonList(Place.Field.PHOTO_METADATAS); // Get a Place object (this example uses fetchPlace(), but you can also use findCurrentPlace()) final FetchPlaceRequest placeRequest = FetchPlaceRequest.newInstance(placeId, fields); placesClient.fetchPlace(placeRequest).addOnSuccessListener((response) -> { final Place place = response.getPlace(); // Get the photo metadata. final List<PhotoMetadata> metadata = place.getPhotoMetadatas(); if (metadata == null || metadata.isEmpty()) { Log.w(TAG, "No photo metadata."); return; } final PhotoMetadata photoMetadata = metadata.get(0); // Get the attribution text and author attributions. final String attributions = photoMetadata.getAttributions(); final AuthorAttributions authorAttributions = photoMetadata.getAuthorAttributions(); // Create a FetchResolvedPhotoUriRequest. final FetchResolvedPhotoUriRequest photoRequest = FetchResolvedPhotoUriRequest.builder(photoMetadata) .setMaxWidth(500) .setMaxHeight(300) .build(); // Request the photo URI placesClient.fetchResolvedPhotoUri(photoRequest).addOnSuccessListener((fetchResolvedPhotoUriResponse) -> { Uri uri = fetchResolvedPhotoUriResponse.getUri(); RequestOptions requestOptions = new RequestOptions().override(Target.SIZE_ORIGINAL); Glide.with(this).load(uri).apply(requestOptions).into(imageView); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { final ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + exception.getMessage()); final int statusCode = apiException.getStatusCode(); // TODO: Handle error with given status code. } }); });
Атрибуции
В большинстве случаев фотографии мест можно использовать без указания авторства или с обязательным указанием авторства, включенным в изображение. Однако объект метаданных фотографии типа PhotoMetadata
может содержать один из двух типов дополнительных указаний авторства:
- Attributions — строка атрибуции, доступ к которой осуществляется с помощью
PhotoMetadata.getAttributions()
. - AuthorAttributions — объект
AuthorAttributions
, доступ к которому осуществляется с помощьюPhotoMetadata.getAuthorAttributions()
.
Если возвращаемый объект PhotoMetadata
содержит какой-либо тип атрибуции, необходимо включить эту атрибуцию в приложение при каждом отображении изображения. Подробнее см. в разделе Отображение атрибуции .