장소 사진 (신규)

플랫폼 선택: Android iOS 웹 서비스

장소 사진 (신규)을 사용하면 고품질 사진 콘텐츠를 애플리케이션에 추가할 수 있습니다. 장소 사진을 사용하면 장소 데이터베이스에 저장된 수백만 개의 사진에 액세스할 수 있습니다. 장소 사진은 비트맵 이미지에 URI를 반환합니다. 비트맵 이미지의 최대 크기는 4800x4800픽셀입니다.

장소 사진 요청

장소의 이미지를 가져오려면 다음 단계를 따르세요.

  1. 장소 세부정보 (신규)를 사용하여 fetchPlace()Place 객체를 가져옵니다. 응답 Place 객체에 포함할 필드 목록에 Place.Field PHOTO_METADATAS 필드를 포함해야 합니다.
  2. FetchPlaceResponseOnSuccessListener에서 Place.getPhotoMetadas()를 호출하여 응답 Place 객체에서 PhotoMetadata 유형의 사진 메타데이터 객체를 가져옵니다.
  3. FetchResolvedPhotoUriRequest 객체를 만들어 요청을 실행하고 사진 메타데이터 객체와 최대 높이, 최대 너비 또는 둘 다를 전달합니다.
  4. PlacesClient.fetchResolvedPhotoUri()를 사용하여 사진 URI를 요청합니다.
  5. OnSuccessListener를 추가하고 FetchResolvedPhotoUriResponse 객체에서 사진 URI를 가져옵니다.

필수 매개변수

FetchResolvedPhotoUriRequest의 필수 매개변수는 다음과 같습니다.

  • 사진 메타데이터

    반환할 사진의 메타데이터 객체입니다.

  • 최대 높이 또는 최대 너비

    반환할 이미지의 최대 높이와 너비를 픽셀로 지정합니다. 지정한 값보다 이미지가 작은 경우 원본 이미지가 반환됩니다. 이미지의 높이 또는 너비 중 하나가 더 큰 경우에는 원래의 가로세로 비율을 유지한 채로 작은 크기에 맞게 크기가 조정됩니다. 최대 높이 및 최대 너비 속성 모두 1에서 4800 사이의 정수가 허용됩니다. 최대 높이, 최대 너비 또는 둘 다를 지정해야 합니다.

    • 최대 높이 매개변수를 설정하려면 FetchResolvedPhotoUriRequest 객체를 빌드할 때 setMaxHeight() 메서드를 호출합니다.
    • 최대 너비 매개변수를 설정하려면 FetchResolvedPhotoUriRequest 객체를 빌드할 때 setMaxWidth() 메서드를 호출합니다.

장소 사진 예시

다음 예에서는 장소 사진 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 객체에 저작자 표시 유형 중 하나가 포함된 경우 이미지를 표시할 때마다 애플리케이션에 저작자 표시를 포함해야 합니다. 자세한 내용은 저작자 표시 표시를 참고하세요.