Swift3 如何将GooglePlaces照片加载到UITableViewCell 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

我有GooglePlace的PlaceID,正在尝试找出如何将place照片加载到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;
            }
        })
    }
我无法从文档中找出如何直接下载一张地点照片。许多失败的尝试之一:

    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获得一组照片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")
            }
        })
    }

非常感谢你的帮助。这太棒了!非常感谢你的帮助。这太棒了!