iOS:动态标记信息窗口

use*_*732 5 google-maps infowindow marker ios google-maps-sdk-ios

我正在尝试将图像动态加载到信息窗口中。问题是 SDWebImage 永远不会完成。但是,一旦我再次单击标记,图像就会显示并完成,但不会在第一次被调用。我的“运行”日志第一次显示,所以我知道代码正在被调用,但在第一次运行时不会显示完整,除非图像被缓存,在这种情况下它会显示在第二个标记点上。

旁注:我将图像的链接存储在片段中,因为我没有其他用途。

任何想法为什么 SDWebImage 不完整?或者有没有其他人能想到的更好的方法?

我在文档块下看到的最后一件事它说以下似乎适合但我不知道我是如何取消请求以导致这种行为的。

注意:如果您的图像请求在完成之前被取消,则不会调用您的成功块和失败块。

bool tapped = NO;

-(BOOL) mapView:(GMSMapView *) mapVieW didTapMarker:(GMSMarker *)marker{
    tapped=YES;
    [mapVieW setSelectedMarker:marker];
    return YES;
}

- (UIView *)mapView:(GMSMapView *)mapVieW markerInfoWindow:(GMSMarker *)marker{
    if([marker.snippet isEqualToString:@""] || [marker.snippet isEqualToString:nil]){
        //no image
        tapped = NO;
        //code here
        return view;
    }else{
        //image
        //code for custom view which is unimportant
        if(tapped){
            NSLog(@"run");
            [image setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/%@", URL_PREFIX, marker.snippet]] placeholderImage:[UIImage imageNamed:@"you"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
                NSLog(@"complete");
                tapped=NO;
                [mapView setSelectedMarker:nil];
                [mapView setSelectedMarker:marker];
            }];
        }
        return view;
    }
}
Run Code Online (Sandbox Code Playgroud)