SDWebImage无法在Google Maps InfoWindow中使用

时间:2015-02-07 17:16:15

标签: ios google-maps google-maps-sdk-ios

我试图通过SDWebImage加载放置在InfoWindow中的图像。

首次打开此InfoWindow mainLogoImageView时只放置占位符。关于第二次加载的图像。问题是图像无法在InfoWindow首次打开时加载(它不取决于我等待加载图像的时间)

func mapView(mapView: GMSMapView!, markerInfoWindow marker: GMSMarker!) -> UIView! { 

var infoWindow : CustomInfoWindow = NSBundle.mainBundle().loadNibNamed("CustomInfoWindow", owner: self, options: nil)[0] as CustomInfoWindow

infoWindow.mainLogoImageView.sd_setImageWithURL(NSURL(string: self.sharedManager.myModel[0].img_logo), placeholderImage: UIImage(named: "logo_placeholder.png"))

return infoWindow

}

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

在mapView函数中插入marker.tracksInfoWindowChanges = true;

Answer to your question

func mapView(mapView: GMSMapView!, markerInfoWindow marker: GMSMarker!) UIView! {   
   marker.tracksInfoWindowChanges = true;
   var infoWindow : CustomInfoWindow = NSBundle.mainBundle().loadNibNamed("CustomInfoWindow", owner: self, options: nil)[0] as CustomInfoWindow
   infoWindow.mainLogoImageView.sd_setImageWithURL(NSURL(string: self.sharedManager.myModel[0].img_logo), placeholderImage: UIImage(named: "logo_placeholder.png"))

   return infoWindow
} 

答案 1 :(得分:1)

我想我可能会找到解决问题的方法。我在Objective-C中编写了我的代码,希望你能把它翻译成Swift。

如果您想获得完成回调,则可以尝试使用SDWebImageMannager的{​​{1}}方法。

但是为了让图像第一次显示,你需要有一个实例变量。

首先,您需要声明一个索引计数器实例变量:

在Swift中

downloadImageWithURL可能是int counter = 0;

然后在您的委托方法中,您可以执行以下操作:

var counter = 0;