Добавьте MapKit Overlay для сопоставления x1 за раз из цикла for

У меня есть словарь, загруженный из plist. Я перебираю свой массив, который содержит в общей сложности 4000 длин и латов.

Я обрабатываю цикл for в фоновом потоке с помощью GCD (поскольку он блокирует пользовательский интерфейс во время обработки) и добавляю наложения в эту задачу, как показано ниже.

Все работает нормально, за исключением того, что добавление всех наложений на карту появляется только после завершения цикла полного массива. Я бы хотел, чтобы я перебирал массив и добавлял наложение x1 за раз к представлению, а не ждал, пока общая сумма будет обработана.

-(void)loadOverlays{

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // Add code here to do background processing
    int d;
    for (d = 0; d < [[tempDict allValues]count]; d++) {

        //Get values from dic
        values = [tempDict allValues];
        id aValue = [values objectAtIndex:d];

        latCircle = [aValue objectAtIndex:1];
        lngCircle = [aValue objectAtIndex:2];

        geoFCenter = CLLocationCoordinate2DMake([latCircle floatValue], [lngCircle floatValue]);
        geoFRadius = 10000.0; // 10,000 metres

        //Add Zone circle
        circle = [MKCircle circleWithCenterCoordinate:geoFCenter radius:geoFRadius];
        [circle setTitle:@"2"];

        [self.dragMap addOverlay:circle];

    }
});

}


person Alex McPherson    schedule 05.08.2013    source источник


Ответы (1)


Вы пробовали использовать DISPATCH_QUEUE_PRIORITY_BACKGROUND вместо DISPATCH_QUEUE_PRIORITY_DEFAULT?

person garrettmurray    schedule 05.08.2013
comment
Рад помочь (а мы все делаем такие маленькие ошибки каждый день!). - person garrettmurray; 06.08.2013
comment
Спасибо за помощь! - person Alex McPherson; 06.08.2013