Фотографии мест (новинка)

Выберите платформу: Android iOS Web Service

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

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

Запросы на размещение фотографий

Чтобы получить изображение места:

  1. Используйте Place Details (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 .

Примеры фотографий места

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

Если возвращаемый объект PhotoMetadata включает любой тип атрибуции, вы должны включить атрибуцию в свое приложение, где бы вы ни отображали изображение. Для получения дополнительной информации см. Отображение атрибуции .