如何将GooglePlaces Photo加载到UITableViewCell UIImageView中

时间:2017-10-10 10:59:11

标签: swift3 google-places-api google-places

我有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

1 个答案:

答案 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")
            }
        })
    }