我有一个地图视图,其中包含大量的注释(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;
}
}
}
功能非常好,尽管由于循环的庞大大小,在缩放和滚动时会导致许多减速。我似乎想不出更好的处理方法,有没有一种只循环遍历当前显示的注释或类似方法来减小循环的大小?