MKMapView和注释隐藏与缩放

时间:2012-08-30 13:48:29

标签: objective-c mkmapview mkannotation

我正在使用MKMapView ...我正在为地图添加数千个注释,这会导致地图移动缓慢。 我想用缩放级别显示/隐藏注释。在每次缩放中,我想隐藏重叠的注释。 有没有解决方案?

到目前为止,我提出了在重叠上共同绘制注释边界矩形并删除注释(如果存在重叠)。这个解决方案很慢,因为我需要将所有内容与所有内容进行比较(我知道,我可以使用树等...)其次,删除并添加注释回到地图上的速度有点慢。

什么是好的,是有权访问注释渲染,如果渲染是注释,检查它是否可以... 可以吗?

谢谢

2 个答案:

答案 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”)