如何检查MKCoordinateRegion中是否有MKAnnotation可用

ran*_*its 8 iphone mkmapview ios

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

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

Anu*_*rag 27

使用该类中的annotationsInMapRect:方法MKMapView.它返回NSSet在给定map rect中可见的所有注释对象中的一个.使用containsObject:方法NSSet测试注释是否存在于该组可见注释中.

MKMapRect visibleMapRect = aMapView.visibleMapRect;
NSSet *visibleAnnotations = [aMapView annotationsInMapRect:visibleMapRect];
BOOL annotationIsVisible = [visibleAnnotations containsObject:someAnnotation];
Run Code Online (Sandbox Code Playgroud)

visibleMapRect与该地区相同,但只是一种不同的表现形式.取自文档,

visibleMapRect

地图视图当前显示的区域.

@property(nonatomic) MKMapRect visibleMapRect

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