如何将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'simageView

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") 
      } 
     }) 
    } 
+0

非常感谢您的帮助。这很棒! –