如何检查MKCoordinateRegion中是否有MKAnnotation

我注意到,如果我使用MKMapView的selectAnnotation:animated:那么如果MKAnnotation没有显示在我的地图显示的当前MKCoordinateRegion中,它会从屏幕上滚动我的地图。

有没有一种简单的方法来检查指定的MKCoordinateRegion当前是否在屏幕上的注释? 我希望能够select仅在屏幕上而不是在屏幕外的注释。

MKMapView类中使用annotationsInMapRect:方法。 它返回在给定的map rect中可见的所有注解对象的NSSet 。 使用NSSetcontainsObject:方法来testing该注释是否存在于该组可见注释中。

 MKMapRect visibleMapRect = aMapView.visibleMapRect; NSSet *visibleAnnotations = [aMapView annotationsInMapRect:visibleMapRect]; BOOL annotationIsVisible = [visibleAnnotations containsObject:someAnnotation]; 

visibleMapRect和区域相同,只是表示forms不同而已。 从文档中,

visibleMapRect

地图当前显示的区域。

@property(nonatomic) MKMapRect visibleMapRect

该属性表示与region属性相同的基本信息,但是指定为地图矩形而不是区域。