Bạn có thể sử dụng Places SDK for iOS để yêu cầu ảnh địa điểm hiển thị 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. Để truy xuất ảnh cho một địa điểm, bạn phải thực hiện các bước sau:
- Gọi
[GMSPlacesClient fetchPlaceFromPlaceId]
, truyền một chuỗi có mã địa điểm và một lệnh gọi lại. Thao tác này sẽ gọi lệnh gọi lại bằng một đối tượngGMSPlacePhotoMetadataList
. - Trên đối tượng
GMSPlacePhotoMetadataList
, hãy truy cập vào thuộc tínhresults
rồi chọn những bức ảnh cần tải từ mảng. - Đối với mỗi
GMSPlacePhotoMetadata
cần tải từ danh sách này, hãy gọi[GMSPlacesClient loadPlacePhoto:callback:]
hoặc[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
. Các phương thức này sẽ gọi lệnh gọi lại bằng một UIImage có thể sử dụng. Ảnh có thể có chiều rộng hoặc chiều cao tối đa là 1.600 pixel.
Mã mẫu
Phương thức ví dụ sau đây lấy mã địa điểm và nhận ả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
// Specify the place data types to return (in this case, just photos). let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.photos.rawValue))! placesClient?.fetchPlace(fromPlaceID: "INSERT_PLACE_ID_HERE", placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { // Get the metadata for the first photo in the place photo metadata list. let photoMetadata: GMSPlacePhotoMetadata = place.photos![0] // Call loadPlacePhoto to display the bitmap and attribution. self.placesClient?.loadPlacePhoto(photoMetadata, callback: { (photo, error) -> Void in if let error = error { // TODO: Handle the error. print("Error loading photo metadata: \(error.localizedDescription)") return } else { // Display the first image and its attributions. self.imageView?.image = photo; self.lblText?.attributedText = photoMetadata.attributions; } }) } })
Objective-C
// Specify the place data types to return (in this case, just photos). GMSPlaceField fields = (GMSPlaceFieldPhotos); NSString *placeId = @"INSERT_PLACE_ID_HERE"; [_placesClient fetchPlaceFromPlaceID:placeId placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { GMSPlacePhotoMetadata *photoMetadata = [place photos][0]; [self->_placesClient loadPlacePhoto:photoMetadata callback:^(UIImage * _Nullable photo, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error loading photo metadata: %@", [error localizedDescription]); return; } else { // Display the first image and its attributions. self->imageView.image = photo; self->lblText.attributedText = photoMetadata.attributions; } }]; } }];
Lưu vào bộ nhớ đệm
Ảnh được tải bằng [GMSPlacesClient loadPlacePhoto:callback:]
hoặc [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
sẽ được lưu vào bộ nhớ đệm trên cả đĩa và trong bộ nhớ bằng 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 của mình chia sẻ một NSURLCache
với Places SDK cho iOS, bạn có thể tạo một NSURLCache
mới và chỉ sử dụng NSURLCache
này 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 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, nếu phiên bản GMSPlacePhotoMetadata
được trả về có thông tin ghi công, thì bạn phải thêm thông tin ghi công bổ sung này vào ứng dụng của mình bất cứ khi nào bạn hiển thị hình ảnh. Xin lưu ý rằng người dùng phải có thể nhấn vào các đường liên kết trong thông tin ghi nhận quyền tác giả. Xem tài liệu về thông tin ghi nhận quyền tác giả.
Hạn mức sử dụng
Việc truy xuất một hình ảnh sẽ tốn một đơn vị hạn mức; không có giới hạn sử dụng nào đối với việc truy xuất siêu dữ liệu ảnh. Tìm hiểu thêm về mức sử dụng và phí.