我正在尝试使用Google Places API使用SDWebImage来放置照片以异步加载图像。但是,图像未加载。我已经仔细检查过我的photo_reference是否不正确,但它与我提取的JSON数据相同。下面是我的代码,显示我是如何发出请求的。我已经解析了JSON数据,并获得了与每个地方图像相关联的photo_reference。然后我将该photo_reference放入一个URL字符串中,该字符串被放入一个数组中并在cellForRowAt表视图方法中调用。
if let results = myReadableJSON["results"] as? [JSONStandard]{
for i in 0..<results.count{
let item = results[i]
let names = item["name"] as! String
placeNames.append(names)
print("The number of names is: ", placeNames.count)
print("The name(s) is/are: ", placeNames[i],"\n")
// GETTING PLACE PHOTOS AND PUTTING THEM INTO imageURL ARRAY
if let photos = item["photos"] as? [JSONStandard]{
for j in 0..<photos.count{
let photo = photos[j] as JSONStandard
let photoRef = photo["photo_reference"] as! String
let photoURL = NSString(format: "https://maps.googleapis.com/maps/api/place/photo?maxwidth=34&photoreference=%@&key=AIzaSyD3f-rVhs_dNPnsNRorgMDw-MH23k4WrPw", photoRef) as? String
imageURL.append(photoURL!)
}
}
}
使用SDWebImage方法的表视图方法
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! exploreListTableViewCell
cell.venuesLabel.text = placeNames[indexPath.row]
cell.venuesImage.sd_setImage(with: URL(string: imageURL[indexPath.row]), placeholderImage: #imageLiteral(resourceName: " card1"))
cell.venuesImage.layer.cornerRadius = cell.venuesImage.frame.size.width / 2
cell.venuesImage.clipsToBounds = true
return cell
}
答案 0 :(得分:1)
根据Google文档,成功的Place Photo请求的响应将是一张图片。图像的类型取决于最初提交的照片的类型。
如果您的请求超出可用配额,服务器将返回HTTP 403状态并显示您添加的图像,以指示已超出配额。
请检查您是否有任何错误。
确保您的API无法从Google控制台访问,且必须有效。
检查您的照片参考参数是否有效。