To display annotation callout of those that are visible on screen just the code below should do the trick, as it relies on the selectAnnotation
method of MKMapView
, of course, after detecting the desired zoom level:
for (MKAnnotation *annotation in mapView.annotations) {
if ( MKMapRectContainsPoint(mapView.visibleMapRect, MKMapPointForCoordinate(annotation.coordinate)) ) {
[mapView selectAnnotation:annotation animated:YES];
}
}