que tiene una vista de mapa con una gran cantidad de anotaciones (3000 +), cuando el usuario se amplia a un nivel razonable todo está bien y rápido.el manejo de grandes cantidades de MKMapView Anotaciones
Aunque cuando el usuario aleja la vista y una gran cantidad de anotaciones aparecen a la vista, se produce una gran desaceleración debido a la gran cantidad de anotaciones que se muestran a la vez. ¿Cuál es la mejor manera de manejar esto?
La solución actual que estoy usando:
- (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;
}
}
}
Funciona muy bien aunque debido al gran tamaño del bucle esto provoca una gran cantidad de desaceleración al acercar y alejar y desplazar la pantalla. Parece que no puedo pensar en una mejor manera de manejar esto, ¿hay alguna manera de recorrer solo las anotaciones que se muestran actualmente o algo así para reducir el tamaño del ciclo?
Esto aceleró las cosas :) Lo implementaré junto con algunas de las sugerencias de Donkim y todo debería ser muy rápido. – Alex
Hola, ¿qué debo hacer en setMapViewsHidden? Ocultar esas anotaciones? – Misha
MapViewsHidden es una propiedad BOOL. –