我注意到,如果我使用MKMapView的selectAnnotation:animated:,如果MKAnnotation没有显示在我地图正在显示的当前MKCoordinateRegion中,它将把我的地图滚动到屏幕之外。
有没有一种简单的方法来检查注释当前是否在屏幕上指定的MKCoordinateRegion中?我希望能够选择一个只在屏幕上而不是屏幕外的注释。
发布于 2011-12-30 11:04:34
在MKMapView类中使用annotationsInMapRect:方法。它返回在给定map rect中可见的所有注释对象的NSSet。使用NSSet的containsObject:方法测试该批注是否存在于该可见批注集中。
MKMapRect visibleMapRect = aMapView.visibleMapRect;
NSSet *visibleAnnotations = [aMapView annotationsInMapRect:visibleMapRect];
BOOL annotationIsVisible = [visibleAnnotations containsObject:someAnnotation];此外,visibleMapRect与区域相同,但只是不同的表示形式。从文件里拿出来,
visibleMapRect
地图视图当前显示的区域。
@property(nonatomic) MKMapRect visibleMapRect
此属性表示与region属性相同的基本信息,但指定为地图矩形而不是区域。
https://stackoverflow.com/questions/8675702
复制相似问题