Place Photos (новое) позволяет добавлять высококачественный фотографический контент в приложение. Place Photos дает доступ к миллионам фотографий, хранящихся в базе данных Places. Place Photos возвращает URI растрового изображения. Максимальный размер растрового изображения составляет 4800 на 4800 пикселей.
Запросы на размещение фотографий
Чтобы получить изображение места:
- Используйте Place Details (New) для извлечения объекта
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
включает любой тип атрибуции, вы должны включить атрибуцию в свое приложение, где бы вы ни отображали изображение. Для получения дополнительной информации см. Отображение атрибуции .