One solution would be to use these MKMapView
methods :
- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect // iOS4.2+ only!
to retrieve visible Annotations, then use :
- (MKAnnotationView *)viewForAnnotation:(id<MKAnnotation>)annotation;
To get the corresponding view (should never return nil if first function does it job correctly)
Then I guess changing centerOffset
should do the job, (plus maybe some -[UIView setNeedsDisplay/Layout]
to force a redraw)
Changing centerOffset depending on zoomLevel sounds strange, but I guess you have your reasons :)