Swift3 如何将GooglePlaces照片加载到UITableViewCell UIImageView
我有GooglePlace的PlaceID,正在尝试找出如何将place照片加载到UITableView中。Google提供的示例代码显示了如何加载单个UIImageView,这很好:Swift3 如何将GooglePlaces照片加载到UITableViewCell UIImageView,swift3,google-places-api,google-places,Swift3,Google Places Api,Google Places,我有GooglePlace的PlaceID,正在尝试找出如何将place照片加载到UITableView中。Google提供的示例代码显示了如何加载单个UIImageView,这很好: func loadFirstPhotoForPlace(placeID: String) { GMSPlacesClient.shared().lookUpPhotos(forPlaceID: placeID) { (photos, error) -> Void in
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
您可以从谷歌的Place DetailAPI获得一组照片ID
photos[]
,这些照片ID对应于特定的placeID
照片[]-照片对象数组,每个对象包含对
图像。地点详细信息请求最多可返回十张照片。更多
有关放置照片以及如何在中使用图像的信息
应用程序可以在PlacePhotos文档中找到。照片
对象描述为:
photo_reference-执行照片请求时用于标识照片的字符串
高度-图像的最大高度
宽度-图像的最大宽度
html_Attributes[]-包含任何必需的属性。此字段将始终存在,但可能为空
您可以在此处查看文档:
现在,要获得与photoID
对应的照片,请使用Google的placephotoAPI
您可以在此处找到文档:
示例:
要加载与UITableViewCell的imageView
中的photoID
对应的图像,请执行以下操作:
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")
}
})
}
您可以从谷歌的Place DetailAPI获得一组照片IDphotos[]
,这些照片ID对应于特定的placeID
照片[]-照片对象数组,每个对象包含对
图像。地点详细信息请求最多可返回十张照片。更多
有关放置照片以及如何在中使用图像的信息
应用程序可以在PlacePhotos文档中找到。照片
对象描述为:
photo_reference-执行照片请求时用于标识照片的字符串
高度-图像的最大高度
宽度-图像的最大宽度
html_Attributes[]-包含任何必需的属性。此字段将始终存在,但可能为空
您可以在此处查看文档:
现在,要获得与photoID
对应的照片,请使用Google的placephotoAPI
您可以在此处找到文档:
示例:
要加载与UITableViewCell的imageView
中的photoID
对应的图像,请执行以下操作:
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")
}
})
}
非常感谢你的帮助。这太棒了!非常感谢你的帮助。这太棒了!