当我缩放mapView时,我需要计算注释的数量,并获取地图上显示的数组,然后,我需要重新加载我的表格并仅显示地图上显示的列表。
如何获取带有注释的数字和数组?
当我缩放mapView时,我需要计算注释的数量,并获取地图上显示的数组,然后,我需要重新加载我的表格并仅显示地图上显示的列表。
如何获取带有注释的数字和数组?
至于 swift 2.0,我通常使用这个 mapView 扩展来获取所有当前可见的注释作为 MKAnnotations 数组:
extension MKMapView {
func visibleAnnotations() -> [MKAnnotation] {
return self.annotationsInMapRect(self.visibleMapRect).map { obj -> MKAnnotation in return obj as! MKAnnotation }
}
}
MapKit 类中的这两种方法怎么样:
1)使用以下方法获取地图的可见矩形:
@property(nonatomic, readonly) CGRect annotationVisibleRect
2)然后从参数映射矩形中获取注释NSSet:
- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect
所以我会期待这样的事情:
-(void)getAnotationsInVisibleMapRectangle
{
NSSet *annotationSet = [myMapView annotationsInMapRect:myMapView.annotationVisibleRect];
// print number of annotations
NSLog(@"Number of annotations in rect: %d", annotationSet.count);
// this will return an array from the NSSet
NSArray *annotationArray = [annotationSet allObjects];
}
这有帮助吗?
David 在 Swift 4 中的出色解决方案
extension MKMapView {
func visibleAnnotations() -> [MKAnnotation] {
return self.annotations(in: self.visibleMapRect).map { obj -> MKAnnotation in return obj as! MKAnnotation }
}
}