장소 사진 (신규)

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

유럽 경제 지역 (EEA) 개발자

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

장소 사진 요청

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

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

필수 매개변수

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

  • 사진 메타데이터

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

  • 최대 높이 또는 최대 너비

    반환할 이미지의 최대 높이와 너비를 픽셀 단위로 지정합니다. 이미지가 지정된 값보다 작으면 원래 이미지가 반환됩니다. 이미지가 한쪽 방향으로 더 크면 원래 가로세로 비율로 제한된 두 방향 중 더 작은 방향에 맞게 조정됩니다. 최대 높이와 최대 너비 속성은 모두 1에서 4,800 사이의 정수를 허용합니다. 최대 높이, 최대 너비 또는 둘 다를 지정해야 합니다.

    • 최대 높이 매개변수를 설정하려면 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
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 객체에 기여 분석 유형이 포함되어 있으면 이미지를 표시하는 애플리케이션에 기여 분석을 포함해야 합니다. 자세한 내용은 기여 분석 표시를 참고하세요.