如何检查MKCoordinateRegion中是否有MKAnnotation
我注意到,如果我使用MKMapView的selectAnnotation:animated:
那么如果MKAnnotation没有显示在我的地图显示的当前MKCoordinateRegion中,它会从屏幕上滚动我的地图。
有没有一种简单的方法来检查指定的MKCoordinateRegion当前是否在屏幕上的注释? 我希望能够select仅在屏幕上而不是在屏幕外的注释。
在MKMapView
类中使用annotationsInMapRect:
方法。 它返回在给定的map rect中可见的所有注解对象的NSSet
。 使用NSSet
的containsObject:
方法来testing该注释是否存在于该组可见注释中。
MKMapRect visibleMapRect = aMapView.visibleMapRect; NSSet *visibleAnnotations = [aMapView annotationsInMapRect:visibleMapRect]; BOOL annotationIsVisible = [visibleAnnotations containsObject:someAnnotation];
也visibleMapRect
和区域相同,只是表示forms不同而已。 从文档中,
visibleMapRect
地图当前显示的区域。
@property(nonatomic) MKMapRect visibleMapRect
该属性表示与region属性相同的基本信息,但是指定为地图矩形而不是区域。