我注意到如果使用MKMapView的 selectAnnotation:animated:
,如果MKAnnotation没有显示在当前地图所显示的MKCoordinateRegion中,它会将我的地图滚动到屏幕外。
有没有简单的方法可以检查注释是否当前在指定的MKCoordinateRegion上可见? 我想能够选择仅在屏幕上而不是屏幕外的注释。
MKMapView
类中的annotationsInMapRect:
方法。它返回一个NSSet
,其中包含在给定地图矩形内可见的所有注释对象。使用NSSet
的containsObject:
方法来测试该注释是否存在于可见注释集合中。MKMapRect visibleMapRect = aMapView.visibleMapRect;
NSSet *visibleAnnotations = [aMapView annotationsInMapRect:visibleMapRect];
BOOL annotationIsVisible = [visibleAnnotations containsObject:someAnnotation];
另外,visibleMapRect
与区域相同,只是表示形式不同。从文档中了解到:
visibleMapRect
地图视图当前显示的区域。
@property(nonatomic) MKMapRect visibleMapRect
此属性表示与区域属性相同的基本信息,但指定为地图矩形而不是区域。