добавление оверлеев в MKMapView для быстрого! Это вообще возможно? - PullRequest
0 голосов
/ 31 августа 2011

Привет, у меня следующая проблема! Я добавляю много оверлеев в мой 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 Ответ

6 голосов
/ 11 сентября 2011

Если вы вызываете addOverlay: несколько раз (и ставите в очередь сотни блоков в главном потоке), вы можете получить лучшие результаты, если вместо этого вызовете метод addOverlays: с массивом.

...