장소 사진 (신규)

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

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

장소 사진 요청

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

  1. 장소 세부정보 (신규)를 사용하여 Place 객체를 가져옵니다. fetchPlace() Place.Field PHOTO_METADATAS 필드를 포함하여 필드 목록에 응답 Place 객체에 포함합니다.
  2. OnSuccessListener 에 대한 FetchPlaceResponse. Place.getPhotoMetadas()를 호출하여 PhotoMetadata 유형의 사진 메타데이터 객체를 가져옵니다. 응답 Place 객체에서 삭제합니다.
  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 객체에 두 가지 유형의 기여 분석이 모두 포함된 경우 이미지를 표시할 때마다 애플리케이션에 저작자 표시를 포함해야 합니다. 자세한 내용은 저작자 표시 표시를 참고하세요.