如何使用 MapKit 从地图中删除所有注释

Posted

技术标签:

【中文标题】如何使用 MapKit 从地图中删除所有注释【英文标题】:How can I remove all annotations from a map using MapKit 【发布时间】:2021-02-04 18:41:46 【问题描述】:

我尝试过使用 RemoveAnnotation 功能,但我不知道如何将它们全部删除

struct MapView: View 
    @State private var region = MKCoordinateRegion(
        center: CLLocationCoordinate2D(
            latitude: 25.7617,
            longitude: 80.1918
        ),
        span: MKCoordinateSpan(
            latitudeDelta: 100,
            longitudeDelta: 100
        )
    )
    

    var body: some View 
        Map(coordinateRegion: $region)
     

【问题讨论】:

【参考方案1】:

我正在使用此扩展程序

extension MKMapView 
        
        
        func removeAnnotationAndOverlay(annotation: MKAnnotation) 
            
            removeAnnotation(annotation)
            
            if overlays.count > 0 
                
                if let overlay = overlays.first 
                    
                    removeOverlay(overlay)
                    
                
                
            
           
        
        
        func removeAllOverlays() 
            
           
            removeOverlays(overlays)
                    
     
            
        
        
        
        func removeAllAnnotations() 
            
               
            removeAnnotations(annotations)
                
    
        
        
        func removeAllAnnotationsAndOverlays() 
            
            removeAllOverlays()
            
            removeAllAnnotations()
        
    

【讨论】:

我应该在哪里调用函数? 从你的代码很难说。我使用 MapView 作为 UIViewRepresentable,makeUIView 返回实际的 Map 类,在我的例子中是 RideMapView 类:MKMapView、MKMapViewDelegate。然后在 updateUIView 我放置和删除注释。

以上是关于如何使用 MapKit 从地图中删除所有注释的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MapKit (SwiftUI) 将工具提示添加到地图注释以在地图上显示位置名称

在 iOS MapKit 中,如何在地图旋转时为注释设置动画?

如何将信息从 MapKit 注释发送到新的视图控制器

从安装地图的阵列中检索信息(MapKit)

尝试显示从 Firebase 到 MapKit 的位置数据

Swift 2 MapKit Annotations - 如何对注释进行分组?