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
включает в себя любой тип атрибуции, вы должны включить атрибуцию в свое приложение, где бы вы ни отображали изображение. Дополнительную информацию см. в разделе «Отображение авторства» .