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

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

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