У меня есть вид карты с большим количеством аннотаций (3000+), когда пользователь увеличивает масштаб до разумного уровня, все идет хорошо и быстро.
Хотя, когда пользователь уменьшает масштаб и появляется большое количество аннотаций, происходит большое замедление из-за большого количества аннотаций, отображаемых одновременно. Как лучше всего справиться с этим?
Текущее решение, которое я использую:
- (void)mapView:(MKMapView *)_mapView regionDidChangeAnimated:(BOOL)animated {
NSArray *annotations = [_mapView annotations];
MapAnnotation *annotation = nil;
for (int i=0; i<[annotations count]; i++)
{
annotation = (MapAnnotation*)[annotations objectAtIndex:i];
if (_mapView.region.span.latitudeDelta > .010)
{
[[_mapView viewForAnnotation:annotation] setHidden:YES];
warningLabel.hidden = NO;
}
else {
[[_mapView viewForAnnotation:annotation] setHidden:NO];
warningLabel.hidden = YES;
}
}
}
Отлично работает, хотя из-за огромного размера цикла это вызывает значительное замедление при увеличении и уменьшении масштаба и прокрутке. Кажется, я не могу придумать лучшего способа справиться с этим, есть ли способ только перебрать аннотации, отображаемые в данный момент, или что-то в этом роде, чтобы уменьшить размер цикла?