Bạn có thể sử dụng SDK Địa điểm dành cho iOS (Mới) để yêu cầu hiển thị ảnh địa điểm trong ứng dụng của mình. Ảnh do dịch vụ ảnh trả về đến từ nhiều nguồn, bao gồm cả ảnh do chủ doanh nghiệp và người dùng đóng góp.
Ảnh là hình ảnh bitmap được biểu thị bằng đối tượng UIImage. Hình ảnh bitmap có kích thước tối đa là 4800x4800 pixel.
Yêu cầu hình ảnh
Bạn có thể yêu cầu thêm tối đa 10 ảnh cho một địa điểm:
Gọi
[GMSPlacesClient lookUpPhotosForPlaceID]
, truyền mã nhận dạng địa điểm và lệnh gọi lạiGMSPlacePhotoMetadataResultCallback
. Yêu cầu này gọi lệnh gọi lạiGMSPlacePhotoMetadataResultCallback
bằng đối tượngGMSPlacePhotoMetadataList
.Từ đối tượng
GMSPlacePhotoMetadataList
trong lệnh gọi lại, thuộc tính mảngresults
chứa các bức ảnh, trong đó mỗi bức ảnh được biểu thị bằng một đối tượngGMSPlacePhotoMetadata
.Sử dụng đối tượng
GMSPlacePhotoMetadata
để tạoGMSFetchPhotoRequest
, bao gồm cả kích thước tối đa của hình ảnh được yêu cầu.Đối với mỗi đối tượng
GMSPlacePhotoMetadata
trong mảng, hãy gọi[GMSPlacesClient fetchPhotoWithRequest:callback:]
truyền đối tượngGMSFetchPhotoRequest
. Phương thức này gọi lệnh gọi lạiGMSFetchPhotoResultCallback
bằng hình ảnh bitmap có thể sử dụng dưới dạng UIImage.
Một cách khác để yêu cầu ảnh cho một địa điểm là tạo yêu cầu Thông tin chi tiết về địa điểm (Mới), bao gồm GMSPlacePropertyPhotos
trong danh sách trường. Lợi thế của việc thực hiện lệnh gọi Thông tin chi tiết về địa điểm là đối tượng phản hồi GMSPlace
có thể chứa ảnh và mọi trường dữ liệu khác mà bạn muốn cho địa điểm đó.
Mã mẫu
Phương thức mẫu sau đây lấy mã địa điểm và lấy ảnh đầu tiên trong danh sách được trả về. Bạn có thể sử dụng phương thức này làm mẫu cho phương thức mà bạn sẽ tạo trong ứng dụng của riêng mình.
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Request list of photos for a place placesClient.lookUpPhotos(forPlaceID: placeID) { (photos, error) in guard let photoMetadata: GMSPlacePhotoMetadata = photos?.results[0] else { return } // Request individual photos in the response list let fetchPhotoRequest = GMSFetchPhotoRequest(photoMetadata: photoMetadata, maxSize: CGSizeMake(4800, 4800)) self.client.fetchPhoto(with: fetchPhotoRequest, callback: { (photoImage: UIImage?, error: Error?) in guard let photoImage, error == nil else { print("Handle photo error: ") return } print("Display photo Image: ") } ) }
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; [placesClient lookUpPhotosForPlaceID:placeID callback: ^(GMSPlacePhotoMetadataList *list, NSError *error) { GMSPlacePhotoMetadata *photoMetadata = [list results][0]; // Request individual photos in the response list GMSFetchPhotoRequest *fetchPhotoRequest = [[GMSFetchPhotoRequest alloc] initWithPhotoMetadata:photoMetadata maxSize:CGSizeMake(4800, 4800)]; [placesClient fetchPhotoWithRequest:fetchPhotoRequest callback: ^(UIImage *_Nullable photoImage, NSError *_Nullable error) { if (error == nil) { // Display photo } }]; }];
SDK Swift của Địa điểm dành cho iOS (Bản dùng thử)
// First fetch place details // A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [ . name, .website ] ) var fetchedPlace: Place switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): fetchedPlace = place case .failure(let placesError): // Handle error } // Use the place details to fetch a photo's image. guard let photo = fetchedPlace.photos?.first else { // Handle place without photos. } let fetchPhotoRequest = FetchPhotoRequest(photo: photo, maxSize: CGSizeMake(4800, 4800)) switch await placesClient.fetchPhoto(with: fetchPhotoRequest) { case .success(let uiImage): // Handle image. case .failure(let placesError): // Handle error }
Lưu vào bộ nhớ đệm
Ảnh được tải bằng [GMSPlacesClient loadPlacePhoto:callback:]
hoặc [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
được lưu vào bộ nhớ đệm cả trên ổ đĩa và trong bộ nhớ bởi hệ thống tải URL Foundation trong NSURLCache
dùng chung.
Để định cấu hình hành vi lưu vào bộ nhớ đệm, bạn có thể thay đổi bộ nhớ đệm URL dùng chung bằng cách sử dụng [NSURLCache setSharedURLCache:]
trong phương thức application:didFinishLaunchingWithOptions:
của uỷ quyền ứng dụng.
Nếu không muốn ứng dụng chia sẻ NSURLCache
với SDK Địa điểm dành cho iOS, bạn có thể tạo một NSURLCache
mới và sử dụng riêng trong ứng dụng mà không cần đặt làm bộ nhớ đệm dùng chung.
Phân bổ
Trong hầu hết trường hợp, bạn có thể sử dụng ảnh địa điểm mà không cần ghi công hoặc sẽ có phần ghi công bắt buộc trong hình ảnh. Tuy nhiên, nếu thực thể GMSPlacePhotoMetadata
được trả về bao gồm bất kỳ attributions
hoặc authorAttribution
nào, bạn phải đưa các thuộc tính này vào ứng dụng của mình bất cứ khi nào hiển thị hình ảnh. Xem tài liệu về thuộc tính.