Bạn có thể sử dụng SDK địa điểm dành cho iOS để yêu cầu hiển thị hình ảnh địa điểm ứng dụng của bạn. Ảnh được dịch vụ ảnh trả về đến từ nhiều các nguồn, bao gồm cả chủ doanh nghiệp và ảnh do 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à lệnh gọi lại. Thao tác này sẽ gọi lệnh gọi lại cóGMSPlacePhotoMetadataList
. - Trên
GMSPlacePhotoMetadataList
truy cập vàoresults
đối tượng thuộc tính và chọn ảnh để tải từ mảng. - Đối với mỗi
GMSPlacePhotoMetadata
để tải từ danh sách này, hãy gọi[GMSPlacesClient loadPlacePhoto:callback:]
hoặc[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
. Các hàm này sẽ gọi lệnh gọi lại với UIImage có thể sử dụng được. Ảnh có thể có tối đa chiều rộng hoặc chiều cao là 1600 pixel.
Mã mẫu
Phương thức ví dụ sau đây lấy một 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 pháp mà bạn sẽ tạo trong ứng dụng của riêng bạn.
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:]
được lưu vào bộ nhớ đệm cả trên đĩa và trong bộ nhớ bằng hệ thống tải URL nền tảng
trong NSURLCache
được chia sẻ.
Để định cấu hình hành vi lưu vào bộ nhớ đệm, bạn có thể thay đổi bộ nhớ đệm của URL được chia sẻ bằng cách sử dụng
[NSURLCache setSharedURLCache:]
trong application:didFinishLaunchingWithOptions:
của ứng dụng ủy quyền
.
Nếu bạn không muốn ứng dụng của mình chia sẻ NSURLCache
với
SDK Địa điểm dành cho iOS, bạn có thể tạo NSURLCache
mới và sử dụng SDK này
chỉ trong ứng dụng của bạn mà không đặt nó làm bộ nhớ đệm dùng chung.
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, nếu giá trị trả về
GMSPlacePhotoMetadata
Trường hợp có bao gồm một thuộc tính, bạn phải bao gồm thuộc tính bổ sung
trong ứng dụng của bạn ở bất cứ nơi nào bạn hiển thị hình ảnh. Xin lưu ý rằng đường liên kết trong
thuộc tính phải nhấn được. Xem tài liệu về phân bổ.
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 cho truy xuất siêu dữ liệu ảnh. Đọc thêm về mức sử dụng và thanh toán.