4

我正在使用 MKMapView... 我正在向地图添加大量注释,这会导致地图移动缓慢。我想用缩放级别显示/隐藏注释。在每次缩放中,我想隐藏重叠的注释。有什么解决办法吗?

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

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

谢谢

4

2 回答 2

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 以获得更舒适

于 2013-02-21T04:51:55.060 回答
0

自 iOS 11 起,您可以使用本机 SDK 实现此目的,请查看文档(所谓的“MapKit Annotation Clustering”)

于 2021-03-04T13:07:31.777 回答