Place Photos (Новая функция) позволяет добавлять высококачественный фотоконтент в ваше приложение. Place Photos предоставляет доступ к миллионам фотографий, хранящихся в базе данных Places. Place Photos возвращает URI растрового изображения. Максимальный размер растрового изображения составляет 4800 на 4800 пикселей.
Запросы на размещение фотографий
Чтобы получить изображение для определенного места:
- Используйте функцию «Подробная информация о месте (новая)» , чтобы получить объект
Placeс помощьюfetchPlace(). Обязательно включите полеPlace.Field PHOTO_METADATASв список полей, которые должны быть включены в ответный объектPlace. - В обработчике
OnSuccessListenerдля вашегоFetchPlaceResponseвызовитеPlace.getPhotoMetadas()чтобы получить объект метаданных фотографии типаPhotoMetadataиз объектаPlaceполученного в ответе. - Создайте объект
FetchResolvedPhotoUriRequestдля выполнения запроса и передайте объект метаданных фотографии, а также значения максимальной высоты, максимальной ширины или обоих параметров. - Для запроса URI фотографии используйте
PlacesClient.fetchResolvedPhotoUri(). - Добавьте обработчик
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 ListP>lace.Field fields = Collections.singletonList(Place.Field.PHOTO_METADATAS); // Get a Place object 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 содержит какой-либо из этих типов указаний на авторство, вам необходимо включить эти указания в ваше приложение везде, где вы отображаете изображение. Для получения дополнительной информации см. раздел «Отображение указаний на авторство» .