如何将GooglePlaces照片加载到UITableViewCell中UIImageView
问题描述:
我拥有GooglePlace PlaceID,并且试图找出如何将照片加载到UITableView中。 ,谷歌提供了显示了如何将示例代码加载一个单一的UIImageView,并能正常工作:如何将GooglePlaces照片加载到UITableViewCell中UIImageView
func loadFirstPhotoForPlace(placeID: String) {
GMSPlacesClient.shared().lookUpPhotos(forPlaceID: placeID) { (photos, error) -> Void in
if let error = error {
// TODO: handle the error.
print("Error: \(error.localizedDescription)")
} else {
if let firstPhoto = photos?.results.first {
self.loadImageForMetadata(photoMetadata: firstPhoto)
}
}
}
}
func loadImageForMetadata(photoMetadata: GMSPlacePhotoMetadata) {
GMSPlacesClient.shared().loadPlacePhoto(photoMetadata, callback: {
(photo, error) -> Void in
if let error = error {
// TODO: handle the error.
print("Error: \(error.localizedDescription)")
} else {
print("Loading Image")
self.checkInImageView.image = photo;
// self.attributionTextView.attributedText = photoMetadata.attributions;
}
})
}
我不能从文档如何直接下载一个地方照片弄清楚。其中许多失败的尝试:
if let placeID = checkins[indexPath.row].placeID {
GMSPlacesClient.shared().lookUpPhotos(forPlaceID: placeID) { (photos, error) -> Void in
if let firstPhoto = photos?.results.first {
cell.thumbnailImageView.image = firstPhoto
}
}
}
return cell
答
你得到photos[]
从对应于特定placeID
谷歌的地方详细 API照片ID数组。
photos [] - 一组照片对象,每个照片对象都包含对图像的引用 。地点详情请求可能会返回最多10张照片。更多 有关地点照片的信息以及如何使用 应用程序中的图像可以在地点照片文档中找到。照片 对象被描述为:
photo_reference - 用于在执行照片请求时识别照片的字符串。
高度 - 图像的最大高度。
宽度 - 图像的最大宽度。
html_attributions [] - 包含任何所需的归因。该字段将始终存在,但可能为空。
你可以看一下这里的文档:https://developers.google.com/places/web-service/details
我们得到对应于photoID
照片,使用谷歌的地方照片 API。
您可以在这里找到的文档:https://developers.google.com/places/web-service/photos
例子:
要加载对应于photoID
图像中UITableViewCell's
imageView
:
let urlString = "https://maps.googleapis.com/maps/api/place/photo?maxwidth=\(Int(UIScreen.main.bounds.width))&photoreference=\(photoID)&key=API_KEY"
if let url = URL(string: urlString)
{
let urlRequest = URLRequest(url: url)
NSURLConnection.sendAsynchronousRequest(urlRequest, queue: OperationQueue.main, completionHandler: {(response, data, error) in
if let data = data
{
let image = UIImage(data: data)
cell.photoImageView.image = image
}
else
{
cell.photoImageView.image = UIImage(named: "PlaceholderImage")
}
})
}
非常感谢您的帮助。这很棒! –