我正在使用MKMapView ...我正在为地图添加数千个注释,这会导致地图移动缓慢。 我想用缩放级别显示/隐藏注释。在每次缩放中,我想隐藏重叠的注释。 有没有解决方案?
到目前为止,我提出了在重叠上共同绘制注释边界矩形并删除注释(如果存在重叠)。这个解决方案很慢,因为我需要将所有内容与所有内容进行比较(我知道,我可以使用树等...)其次,删除并添加注释回到地图上的速度有点慢。
什么是好的,是有权访问注释渲染,如果渲染是注释,检查它是否可以... 可以吗?
谢谢
答案 0 :(得分:3)
您可以使用以下代码
- (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以获得更舒适的
答案 1 :(得分:0)
您可以使用自 iOS 11 起的原生 SDK 来实现这一点,请检查 the documentation(所谓的“MapKit Annotation Clustering”)