Ảnh về địa điểm (Mới) cho phép bạn thêm nội dung ảnh chất lượng cao vào ứng dụng của mình. Place Photos cho phép bạn truy cập vào hàng triệu bức ảnh được lưu trữ trong cơ sở dữ liệu Địa điểm. Place Photos trả về một URI cho hình ảnh bitmap. Hình ảnh bitmap có kích thước tối đa là 4800 x 4800 pixel.
Yêu cầu về ảnh về địa điểm
Cách truy xuất hình ảnh cho một địa điểm:
- Sử dụng Place Details (New) để tìm nạp một đối tượng
Place
bằngfetchPlace()
. Hãy nhớ thêm trườngPlace.Field PHOTO_METADATAS
vào danh sách các trường cần đưa vào đối tượng phản hồiPlace
. - Trong
OnSuccessListener
choFetchPlaceResponse
, hãy gọiPlace.getPhotoMetadas()
để lấy đối tượng siêu dữ liệu ảnh thuộc loạiPhotoMetadata
từ đối tượng phản hồiPlace
. - Tạo một đối tượng
FetchResolvedPhotoUriRequest
để đưa ra yêu cầu và truyền đối tượng siêu dữ liệu ảnh, cũng như các giá trị cho chiều cao tối đa, chiều rộng tối đa hoặc cả hai. - Sử dụng
PlacesClient.fetchResolvedPhotoUri()
để yêu cầu URI của ảnh. - Thêm một
OnSuccessListener
và lấy URI ảnh từ đối tượngFetchResolvedPhotoUriResponse
.
Thông số bắt buộc
Các tham số bắt buộc cho FetchResolvedPhotoUriRequest
là:
-
Siêu dữ liệu ảnh
Đối tượng siêu dữ liệu của bức ảnh cần trả về.
-
Chiều cao tối đa hoặc chiều rộng tối đa
Chỉ định chiều cao và chiều rộng tối đa (tính bằng pixel) của hình ảnh cần trả về. Nếu hình ảnh nhỏ hơn các giá trị được chỉ định, hình ảnh gốc sẽ được trả về. Nếu hình ảnh lớn hơn ở một trong hai chiều, thì hình ảnh đó sẽ được điều chỉnh tỷ lệ cho phù hợp với chiều nhỏ hơn trong hai chiều, trong phạm vi tỷ lệ khung hình ban đầu. Cả thuộc tính chiều cao tối đa và chiều rộng tối đa đều chấp nhận một số nguyên từ 1 đến 4800. Bạn phải chỉ định chiều cao tối đa, chiều rộng tối đa hoặc cả hai.
- Để đặt tham số chiều cao tối đa, hãy gọi phương thức
setMaxHeight()
khi tạo đối tượngFetchResolvedPhotoUriRequest
. - Để đặt tham số chiều rộng tối đa, hãy gọi phương thức
setMaxWidth()
khi tạo đối tượngFetchResolvedPhotoUriRequest
.
- Để đặt tham số chiều cao tối đa, hãy gọi phương thức
Ví dụ về Place Photos
Ví dụ sau đây minh hoạ cách lấy URI của ảnh về địa điểm.
// 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. } }); });
Phân bổ
Trong hầu hết trường hợp, bạn có thể sử dụng ảnh về địa điểm mà không cần ghi nhận quyền tác giả hoặc sẽ có thông tin ghi nhận quyền tác giả bắt buộc trong ảnh. Tuy nhiên, đối tượng siêu dữ liệu ảnh, thuộc loại PhotoMetadata
, có thể chứa một trong hai loại thông tin ghi nhận bổ sung:
- Thông tin ghi nhận quyền tác giả, một chuỗi thông tin ghi nhận quyền tác giả được truy cập bằng
PhotoMetadata.getAttributions()
. - AuthorAttributions, một đối tượng
AuthorAttributions
được truy cập bằngPhotoMetadata.getAuthorAttributions()
.
Nếu đối tượng PhotoMetadata
được trả về có một trong hai loại thông tin ghi công, thì bạn phải đưa thông tin ghi công đó vào ứng dụng của mình bất cứ khi nào bạn hiển thị hình ảnh. Để biết thêm thông tin, hãy xem phần Hiển thị thông tin ghi nhận quyền tác giả.