我正在使用 MKMapView... 我正在向地图添加大量注释,这会导致地图移动缓慢。我想用缩放级别显示/隐藏注释。在每次缩放中,我想隐藏重叠的注释。有什么解决办法吗?
到目前为止,如果有重叠,我想出了在重叠和删除注释的comapring注释边界矩形。这个解决方案很慢,因为我需要将所有内容与所有内容进行比较(我知道,我可以使用树等...),其次,将注释删除和添加回地图有点慢。
什么是好的,是可以访问注释渲染,如果注释被渲染,检查它是否可以......可以完成吗?
谢谢
我正在使用 MKMapView... 我正在向地图添加大量注释,这会导致地图移动缓慢。我想用缩放级别显示/隐藏注释。在每次缩放中,我想隐藏重叠的注释。有什么解决办法吗?
到目前为止,如果有重叠,我想出了在重叠和删除注释的comapring注释边界矩形。这个解决方案很慢,因为我需要将所有内容与所有内容进行比较(我知道,我可以使用树等...),其次,将注释删除和添加回地图有点慢。
什么是好的,是可以访问注释渲染,如果注释被渲染,检查它是否可以......可以完成吗?
谢谢
您可以使用以下代码
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
NSArray *annotations = [mapView annotations];
//NSLog(@"%@",annotations);
CustomAnnotation *annotation = nil;
for (int i=0; i<[annotations count]; i++) {
annotation = (CustomAnnotation*)[annotations objectAtIndex:i];
if (![annotation isKindOfClass:[MKUserLocation class]]) {
if (mapView.region.span.latitudeDelta <= 0.13f) {
[[mapView viewForAnnotation:annotation] setHidden:NO];
} else {
[[mapView viewForAnnotation:annotation] setHidden:YES];
}
}
}
}
您可以在 if 条件下调整 delta 以获得更舒适
自 iOS 11 起,您可以使用本机 SDK 实现此目的,请查看文档(所谓的“MapKit Annotation Clustering”)