Bạn có thể sử dụng SDK địa điểm dành cho Android để yêu cầu ảnh địa điểm hiển thị trong ứng dụng của bạn. Ảnh được dịch vụ ảnh trả về đến từ từ nhiều nguồn khác nhau, bao gồm cả chủ doanh nghiệp và ảnh do người dùng đóng góp.
SDK địa điểm dành cho Android trả về hình ảnh bitmap có giá trị tối đa kích thước 1600 x 1600 pixel.
Quy trình truy xuất ảnh
Để truy xuất hình ảnh cho một địa điểm:
- Sử dụng Place Details (Thông tin về địa điểm) để tìm nạp đối tượng
Place
(sử dụngfetchPlace()
hoặcfindCurrentPlace()
). Hãy nhớ bao gồm 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
hoặcFindCurrentPlaceResponse
, sử dụngPlace.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 một đối tượng
FetchPhotoRequest
, tuỳ ý chỉ định chiều cao và chiều rộng tối đa (tính bằng pixel). Ảnh có thể có chiều rộng hoặc chiều cao tối đa là 1600px. - Sử dụng
PlacesClient.fetchPhoto()
để yêu cầu bitmap ảnh. - Thêm
OnSuccessListener
và nhận ảnh từFetchPhotoResponse
.
Lấy ảnh
Ví dụ sau minh hoạ việc lấy ảnh địa điểm:
Kotlin
// Define a Place ID. val placeId = "INSERT_PLACE_ID_HERE" // Specify fields. Requests for photos must always have the PHOTO_METADATAS field. val fields = listOf(Place.Field.PHOTO_METADATAS) // Get a Place object (this example uses fetchPlace(), but you can also use findCurrentPlace()) val placeRequest = FetchPlaceRequest.newInstance(placeId, fields) placesClient.fetchPlace(placeRequest) .addOnSuccessListener { response: FetchPlaceResponse -> val place = response.place // Get the photo metadata. val metada = place.photoMetadatas if (metada == null || metada.isEmpty()) { Log.w(TAG, "No photo metadata.") return@addOnSuccessListener } val photoMetadata = metada.first() // Get the attribution text. val attributions = photoMetadata?.attributions // Create a FetchPhotoRequest. val photoRequest = FetchPhotoRequest.builder(photoMetadata) .setMaxWidth(500) // Optional. .setMaxHeight(300) // Optional. .build() placesClient.fetchPhoto(photoRequest) .addOnSuccessListener { fetchPhotoResponse: FetchPhotoResponse -> val bitmap = fetchPhotoResponse.bitmap imageView.setImageBitmap(bitmap) }.addOnFailureListener { exception: Exception -> if (exception is ApiException) { Log.e(TAG, "Place not found: " + exception.message) val statusCode = exception.statusCode TODO("Handle error with given status code.") } } }
Java
// 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. final String attributions = photoMetadata.getAttributions(); // Create a FetchPhotoRequest. final FetchPhotoRequest photoRequest = FetchPhotoRequest.builder(photoMetadata) .setMaxWidth(500) // Optional. .setMaxHeight(300) // Optional. .build(); placesClient.fetchPhoto(photoRequest).addOnSuccessListener((fetchPhotoResponse) -> { Bitmap bitmap = fetchPhotoResponse.getBitmap(); imageView.setImageBitmap(bitmap); }).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.
Mức sử dụng và thanh toán
SKU Ảnh địa điểm được tính phí cho các cuộc gọi đến fetchPhoto()
.
Xem trang Sử dụng và thanh toán để biết thông tin chi tiết.