장소 사진 (신규)

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

장소 사진 (신규)을 사용하면 애플리케이션에 고품질 사진 콘텐츠를 추가할 수 있습니다. 장소 사진 서비스를 사용하면 장소 데이터베이스에 저장된 수백만 장의 사진에 액세스할 수 있습니다. Place Photos는 비트맵 이미지의 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 객체에 두 가지 유형의 저작자 표시가 포함된 경우 이미지를 표시할 때마다 애플리케이션에 저작자 표시를 포함해야 합니다. 자세한 내용은 저작자 표시 표시를 참고하세요.