Place Photos (Mới) cho phép bạn thêm nội dung ảnh chất lượng cao vào . Địa điểm Photos cung cấp cho bạn quyền truy cập vào hàng triệu ảnh được lưu trữ trong cơ sở dữ liệu Địa điểm. Địa điểm Photos trả về URI cho hình ảnh bitmap. Bitmap hình ảnh có kích thước tối đa là 4800 x 4800 pixel.
Yêu cầu đặt ảnh
Để truy xuất hình ảnh cho một địa điểm:
- Sử dụng Place Details (New) (Thông tin chi tiết về địa điểm (Mới)) để tìm nạp đối tượng
Place
bằng cách sử dụngfetchPlace()
. Hãy nhớ đưa trườngPlace.Field PHOTO_METADATAS
vào danh sách trường để đưa vào đối tượngPlace
phản hồi. - 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ượngPlace
phản hồi. - Tạo đố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ị về 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 ảnh. - Thêm
OnSuccessListener
và lấy URI ảnh từFetchResolvedPhotoUriResponse
.
Thông số bắt buộc
Các tham số bắt buộc cho
FetchResolvedPhotoUriRequest
là:
-
Siêu dữ liệu về ảnh
Đối tượng siêu dữ liệu của ả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ị đã chỉ định, hình ảnh gốc sẽ được trả về. Nếu hình ảnh lớn hơn ở một trong hai kích thước, hình ảnh sẽ được điều chỉnh theo tỷ lệ cho vừa với kích thước nhỏ hơn trong hai kích thước, được giới hạn theo 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 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ề Ảnh về địa điểm
Ví dụ sau minh hoạ việc lấy URI ảnh đị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 các trường hợp, bạn có thể sử dụng ảnh địa điểm mà không cần ghi nguồn, hoặc sẽ có
thuộc tính bắt buộc được thêm vào dưới dạng một phần của hình ả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 thuộc tính bổ sung:
- Attributions, một chuỗi phân bổ được truy cập bởi
PhotoMetadata.getAttributions()
. - AuthorAttributions, một
AuthorAttributions
đối tượng được truy cập bởiPhotoMetadata.getAuthorAttributions()
.
Nếu đối tượng PhotoMetadata
được trả về bao gồm một trong hai loại thuộc tính trên, bạn phải
bao gồm thuộc tính trong ứng dụng của bạn ở bất cứ nơi nào bạn hiển thị hình ảnh. Để biết thêm thông tin,
xem Hiển thị thuộc tính.