Swift:如何在地图视图上启用和禁用注释?

Posted

技术标签:

【中文标题】Swift:如何在地图视图上启用和禁用注释?【英文标题】:Swift: How to enable and disable annotations on map view? 【发布时间】:2016-11-12 23:22:03 【问题描述】:

我有一个在地图视图上显示一些注释的代码。但是,我试图拥有一些功能,当用户点击 UISwitch 按钮时可以启用或禁用它。关于我如何实现这一目标的任何建议?提前致谢!

 let theHouse = MKPointAnnotation()
        theHouse.coordinate = CLLocationCoordinate2D(latitude: 38.8977, longitude: -77.0365)

    theHouse.title = "The House, DC"
        theHouse.subtitle = "New Jersey, DC"

    myMapView.addAnnotation(theHouse)
    myAnnotations.append(theHouse.title!)

    //Switch that toggles the annotation...
    @IBAction func turnOffAnnotations(_ sender: UISwitch) 
    //Code that enables and disables the annotation?

if toggle.isOn
    let visible = myMapView.visibleMapRect
    let inRect = myMapView.annotations(in: visible)

    for annotation: MKAnnotation in myMapView.annotations
        if (inRect.contains(anno as! AnyHashable))
          myMapView.removeAnnotation(annotation)
        
    
     else 
        let visible = myMapView.visibleMapRect
        let inRect = myMapView.annotations(in: visible)

        for annotation: MKAnnotation in myMapView.annotations
            if (inRect.contains(anno as! AnyHashable))
                myMapView.addAnnotation(annotation)
            
        
    
//How to add back the removed annotations here?...
    

【问题讨论】:

您只需要删除注释 我有一个删除注释的代码,但是如果我想让注释重新出现,有没有简单的方法呢? 只是重新添加它们?添加和删​​除它们是一个非常简单的过程 您可以使用isHidden 属性来隐藏和再次显示它们。下面看看我的回答。希望对你有帮助 【参考方案1】:

使用viewFor(annotation : MKAnnotation)方法:

Swift 3

@IBAction func changeAnnotationsVisibility(_ sender: UISwitch) 
    let annotationVisible = sender.isOn

    for annotation in myMapView.annotations 
        myMapView.view(for: annotation)?.isHidden = !annotationVisible
    

【讨论】:

以上是关于Swift:如何在地图视图上启用和禁用注释?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中禁用子视图上的特定状态更改动画

如何使用 swift 读取 Firebase 数据库中的值,然后在地图上进行注释?

禁用和启用页面滚动 (Swift)

如何禁用 UIPickerView (Swift)?

启用/禁用表格视图单元格 - iOS - Swift

如何在回收站视图上启用和禁用拖放