25

を返しますUIImageView in - (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker;

これUIImageViewは、 を使用して URL から画像を動的に読み込みますSDWebImage

ドキュメントがマーカー情報ウィンドウについて述べているように:

注: 情報ウィンドウは、マップに表示されるたびに画像としてレンダリングされます。これは、アクティブなときにプロパティを変更しても、すぐには表示されないことを意味します。情報ウィンドウの内容は、次に表示されるときに更新されます。

ポイントは、画像をダウンロードした後、情報ウィンドウが更新されず、ユーザーが非表示にしてから再度表示するまでプレースホルダー画像を表示し続けることです..

markerInfoWindowそのため、ダウンロードしたイメージのブロック内の内容を強制的に更新する必要があります..

4

6 に答える 6

6

これは、次の回避策を使用して問題を修正した方法です。

UIImage *img = [[SDWebImageManager sharedManager] imageWithURL:[NSURL URLWithString:Img_URL]]; //Img_URL is NSString of your image URL
    if (img) {       //If image is previously downloaded set it and we're done.
        [imageView setImage:img];
    }else{
        [imageView setImageWithURL:[NSURL URLWithString:Img_URL] placeholderImage:[UIImage imageNamed:@"defaultPin"] success:^(UIImage *image, BOOL cached) {
            if (!marker.snippet || !cached) {
                [marker setSnippet:@""];                 //Set a flag to prevent an infinite loop
                if (mapView.selectedMarker == marker) {  //Only set if the selected marker equals to the downloaded marker
                    [mpVu setSelectedMarker:marker];
                }
            }
        } failure:^(NSError *error) {

        }];
    }
于 2013-06-28T18:53:38.483 に答える
3

あなたの説明に基づいて、画像のダウンロード後に現在表示されている情報ウィンドウを更新して、情報ウィンドウを新しい詳細で再描画しようとしていると理解しています。

以下の手順を実行できます。

1、情報ウィンドウをプログラムで閉じる

2、同じマーカーの情報ウィンドウをプログラムで再度表示する

于 2013-06-27T18:57:38.363 に答える