2015-02-07 39 views
1

我想通過SDWebImage加載放置在InfoWindow中的圖像。SDWebImage不能在谷歌地圖InfoWindow中工作

首次打開此InfoWindow mainLogoImageView時只放置佔位符。第二張圖片。問題是,圖像不能在信息窗口的第一開口加載(它不取決於我我多少時間等待加載圖像)

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 

} 

感謝您的幫助

+0

是否在第一次載入中顯示佔位符圖像?你也可以嘗試添加一個帶有print/long語句的完成塊,這樣你就可以檢查圖像是否在第一次點擊中成功加載。你也可以嘗試AFNetworking的setImageView方法。 – ztan 2015-02-09 17:18:20

+0

@ztan是的,它首先顯示佔位符圖像。我試圖添加一個完成塊,但是這個塊在第二次點擊時調用了加載的圖像。 – 2015-02-09 17:58:48

+0

@ztan使用AFNetworking給了我相同的結果 – 2015-02-09 18:39:32

回答

0

我想我可能發現了一個解決您的問題。我在Objective-C中編寫了我的代碼,希望可以將它翻譯成Swift。

如果你想獲得完成回調,那麼你可以嘗試使用SDWebImageMannagerdownloadImageWithURL方法。

但是爲了使圖像在第一次顯示,您還需要有一個實例變量。

因此,首先需要聲明的索引計數器實例變量:

int counter = 0;斯威夫特

那麼很可能var counter = 0;在你的委託方法,您可以執行以下操作:

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker{ 

    InfoWindow *view = [[[NSBundle mainBundle] loadNibNamed:@"InfoWindow" owner:self options:nil] objectAtIndex:0]; 

    couter++; 

    [[SDWebImageManager sharedManager] downloadImageWithURL:[NSURL URLWithString:@"https://myimage.png"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) { 
     NSLog(@"in progress"); 
    } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { 
     NSLog(@"complete"); 
     view.imageView.image = image; 
     if (counter == 1) { 
      self.mapView.selectedMarker = marker; 
     } 

    }]; 

    return view; 
} 
1

插入marker.tracksInfoWindowChanges = true; in地圖查看功能

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 
}