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

时间:2011-12-30 02:55:22

标签: iphone ios mkmapview

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

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

1 个答案:

答案 0 :(得分:27)

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

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

同样visibleMapRect与区域相同,但只是一种不同的表示形式。从文档中获取,

  

visibleMapRect

     

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

     

@property(nonatomic) MKMapRect visibleMapRect

     

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