添加叠加到MKMapView快!这甚至可能吗?

时间:2011-08-31 16:33:58

标签: iphone objective-c mkmapview overlay mkoverlay

您好我有以下问题! 我在我的MKMapView中添加了很多叠加层! 例如,我添加了150个叠加层,但由于某些原因,并非所有叠加层都显示出来! 我知道mapView:viewForOverlay:被召唤150次。 我发现如果我将[NSThread sleepForTimeInterval:1]添加到创建了所有叠加层的方法中,则会显示所有叠加层。 那么叠加是否会被快速添加?或者可能是什么问题?

所有叠加层都是在这样的后台线程中创建的!

MKPolyline* routeLine;
....
....
dispatch_async(dispatch_get_main_queue(), ^{

    [self.myMKMapView addOverlay:routeLine];

});

这是mapView:viewForOverlay:

 - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
    MKOverlayView* overlayView = nil;

    MKPolylineView * rLV = [[[MKPolylineView alloc] initWithPolyline:overlay]autorelease];

    rLV.fillColor = [UIColor blueColor];
    rLV.strokeColor = [UIColor blueColor];
    rLV.lineWidth = 1;
    rLV.alpha =  0.5;

    overlayView = rLV;

    return overlayView;
}

1 个答案:

答案 0 :(得分:6)

如果您多次调用addOverlay:(并在主线程上排队数百个块),那么使用数组调用addOverlays:方法可能会获得更好的结果。