【发布时间】:2014-06-12 11:06:44
【问题描述】:
在Google Maps SDK 中将图标设置为GMSMarker 需要UIImage,但目前我的要求是从特定的URL 下载它
问题
问题是有时只显示最后一项。这是关于我如何创建标记的代码(在 Swift 中更新)
func createMarkers() {
mapView.clear()
let mapCoordinates: [CLLocationCoordinate2D] = coordinates()
let iconURLs: [URL] = imageURLs()
var marker = GMSMarker()
for i in 0..<mapCoordinates.count {
let imageURL = iconURLs[i]
marker = GMSMarker()
marker.position = mapCoordinates[i]
marker.map = mapView
downloadImage(from: imageURL) { image in
marker.icon = image
}
}
}
// It is a helper function calling `SDWebImage` which caches the `UIImage` based on its `URL` string
func downloadImage(from url: URL, completion: @escaping (UIImage) -> Void)
根据上面提供的代码,我在第一次加载数据时遇到了问题,因为图钉显示在地图上但没有图像。如果我在一段时间后再次调用createMarkers(),则图标已正确加载。
我不知道为什么会这样,有什么建议或提示可以解决这个问题吗?
【问题讨论】:
-
您好,您有什么解决办法吗??我想在标记的图像上实现延迟加载,但没有显示图像。我正在尝试使用 AsyncImageview 类。请告诉我
-
@Nisha 你不能用它做延迟加载。您需要异步下载所有图像,下载完成后,添加图钉的图像。
-
好的,谢谢您的回复。现在它使用 Grand Central Dispatch 解决了
-
@Nisha 是的,您可以异步下载它们,但是您如何跟踪正在下载的图像?
-
现在我不需要跟踪.. 我使用了 dispatch_async(myQueue, ^{}); for 循环中的方法可能是我可以使用 objectAtIndex:我不确定
标签: ios google-maps-sdk-ios sdwebimage