2011-08-31 3 views
0

안녕하세요 저는 다음과 같은 문제가 있습니다! MKMapView에 많은 오버레이를 추가합니다! 예를 들어, 150 오버레이를 추가했지만 어떤 이유로 모든 것이 표시되지 않습니다! 나는 mapView:viewForOverlay:이 150 번 호출된다는 것을 안다. 만약 내가 이것을 추가하면 : 내 모든 오버레이가 생성되는 모든 오버레이가 나타나는 메소드에 [NSThread sleepForTimeInterval:1]이 나타납니다. 오버레이가 빠르게 추가 될 수 있습니까? 또는 무엇이 문제 일 수 있습니까?MKMapView에 오버레이를 추가하여 빠르게! 그게 가능한가?

모든 오버레이는 이와 같이 백그라운드 스레드에서 생성됩니다!

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

    [self.myMKMapView addOverlay:routeLine]; 

}); 

및이와 addOverlays: 메서드를 호출 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; 
} 

답변

6

당신이 addOverlay: 여러 번 호출 (주 스레드 블록의 수백을 대기)하는 경우, 당신이 얻을 수 있습니다 더 나은 결과입니다 대신 배열.