У меня есть массив аннотаций карты, которые я хочу добавить в MKMapView. Я хотел бы иметь возможность добавлять их по одному с небольшой паузой между каждым добавлением, поэтому я могу показать ход прошлой поездки. Глядя на компоненты MKMapView, я вижу два метода:Последовательное построение и отображение MKMapAnnotations на MKMapView
[self.mapView addAnnotation: ann];
и
[self.mapView addAnnotations: annArray];
Используя массив взрывает их всех там в то же время, так что я попробовал процесс зацикливание пытается оказать каждый аннотаций, как так
for (MapAnnotation *ann in _MapAnnotations) {
//Add custom annotation to map
[self.mapView addAnnotation: ann];
//pause for 0.25 seconds
usleep(250000);
}
Это не работает, либо - процесс приостанавливается в порядке, но не рендеринг не будет сделан, пока все точки не будут построены. Я попытался использовать оператор mapView setNeedsDisplay, чтобы заставить рендеринг карты, но не повезло. Есть идеи?
Благодаря Duncan, мой код теперь выглядит так, но я получаю сбои, когда я пытаюсь прокрутить прочь во время популяции, любые идеи?
Посмотреть уровень переменной
@private BOOL userScrolling;
кнопка прокрутки
//Next Day Clicked
- (IBAction)btnNext:(id)sender{
//Move forward one day
userScrolling = YES;
[self setTheDate: 1];
}
черчения код
userScrolling = NO;
[_MapAnnotations enumerateObjectsUsingBlock: ^(id object,
NSUInteger index,
BOOL *stop)
{
if (userScrolling){ *stop = YES;}
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
(int64_t)(index * 0.25 * NSEC_PER_SEC)),
dispatch_get_main_queue(),^
{
if (!userScrolling){
MapAnnotation *ann = _MapAnnotations[index];
[self.mapView addAnnotation: ann];
[self.mapView setNeedsDisplay];
}else{
*stop = YES;
}
}
);}];
спасибо за это - я получил его для работы с небольшими изменениями. Пожалуйста, извините наивность - я человек IOS, работающий неполный рабочий день, и это для меня все ново. Один вопрос - вот как выглядит мой код сейчас - это используется на экране, где пользователь может прокручиваться от данных, заполняемых до другого дня. Я устанавливаю логический уровень представления, который устанавливается, когда пользователь нажимает кнопку прокрутки - эта переменная тестируется, чтобы определить, следует ли остановиться или нет - см. Ниже. Я получаю аварии и не знаю, как это сделать - любые идеи? –