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

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

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

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

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

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

  1. Используйте функцию «Сведения о месте (новое)» для получения объекта 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 содержит какой-либо тип атрибуции, необходимо включить эту атрибуцию в приложение при каждом отображении изображения. Подробнее см. в разделе Отображение атрибуции .