iOS:动态标记信息窗口

时间:2014-05-08 15:56:59

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

我正在尝试将图像动态加载到infowindow中。问题是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;
    }
}

0 个答案:

没有答案