我有GooglePlace PlaceID,我正在尝试弄清楚如何将照片加载到UITableView中。 Google提供的示例代码显示了如何加载单个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;
}
})
}
我无法从文档中弄清楚如何直接下载Place Photo。许多尝试失败的尝试之一:
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
答案 0 :(得分:2)
您可以从与特定photos[]
对应的 Google地方详情 API获取一系列照片ID placeID
。
photos [] - 一组照片对象,每个对象都包含一个引用 一个图像。地方详情请求最多可返回十张照片。更多 有关地方照片的信息以及如何使用您的照片 应用程序可以在Place Photos文档中找到。一张照片 对象描述为:
photo_reference - 用于在执行照片请求时识别照片的字符串。
height - 图像的最大高度。
width - 图像的最大宽度。
html_attributions [] - 包含任何所需的属性。此字段将始终存在,但可能为空。
您可以在此处查看文档:{{3}}
现在要获取与photoID
对应的照片,请使用 Google的地方照片 API。
您可以在此处找到文档:https://developers.google.com/places/web-service/details
示例:强>
在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")
}
})
}