Place Photos (New)

Выберите платформу: Android iOS Веб-сервисы

Разработчики из Европейской экономической зоны (ЕЭЗ)

Place Photos (Новое) позволяет добавлять в приложение высококачественный фотоконтент. Place Photos открывает доступ к миллионам фотографий, которые хранятся в базе данных Places. Place Photos возвращает URI растрового изображения. Максимальный размер растрового изображения – 4800 x 4800 пикселей.

Запросы Place Photos

Чтобы получить изображение места, выполните следующие действия:

  1. Используйте информацию о местах (New), чтобы получить объект Place с помощью fetchPlace(). Убедитесь, что поле Place.Field PHOTO_METADATAS включено в список полей, которые должны быть в объекте ответа Place.
  2. В методе OnSuccessListener для FetchPlaceResponse вызовите Place.getPhotoMetadas(), чтобы получить объект метаданных фотографии типа PhotoMetadata из объекта ответа Place.
  3. Создайте объект FetchResolvedPhotoUriRequest, чтобы выполнить запрос и передать объект метаданных фотографии, а также значения максимальной высоты, максимальной ширины или того и другого.
  4. Используйте PlacesClient.fetchResolvedPhotoUri(), чтобы запросить URI фотографии.
  5. Добавьте OnSuccessListener и получите URI фотографии из объекта FetchResolvedPhotoUriResponse.

Обязательные параметры

Обязательные параметры для FetchResolvedPhotoUriRequest:

  • Метаданные фотографий

    Объект метаданных фотографии, который нужно вернуть.

  • Максимальная высота или максимальная ширина

    Определяет максимальную высоту и ширину возвращаемого изображения в пикселях. Если изображение меньше указанных значений, будет возвращено исходное изображение. Если изображение больше по какому-либо из параметров, оно будет масштабировано в соответствии с меньшим из двух параметров с сохранением исходного соотношения сторон. В качестве максимальной высоты и ширины можно указать целое число от 1 до 4800. Необходимо указать максимальную высоту, максимальную ширину или оба значения.

    • Чтобы задать параметр максимальной высоты, вызовите метод setMaxHeight() при создании объекта FetchResolvedPhotoUriRequest.
    • Чтобы задать параметр максимальной ширины, вызовите метод setMaxWidth() при создании объекта FetchResolvedPhotoUriRequest.

Примеры использования Place Photos

В примере ниже показано, как получить 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
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 может содержать один из двух типов дополнительных атрибуций:

Если возвращенный объект PhotoMetadata содержит любой из типов атрибуции, вы должны указать авторство в приложении везде, где показываете изображение. Подробнее об атрибуции…