2016-11-12 8 views
0

マップビューにいくつかの注釈を表示するコードがあります。しかし、ユーザーがUISwitchボタンをタップしたときに有効または無効にできる機能をいくつか試しています。どのように私はこれを達成するための任意の提案?前もって感謝します!Swift:地図ビューで注釈を有効または無効にする方法は?

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?... 
    } 
+0

あなたは単に私が注釈を削除するコードを持っていますが、私は、注釈をしたい場合 – Paulw11

+0

注釈を削除する必要があります再表示するには、それを行う簡単な方法はありますか? – Geniouse

+0

もう一度追加し直してください。それらを追加して削除するのはかなり単純なプロセスです – Paulw11

答えて

2

使用viewFor(annotation : MKAnnotation)方法:

スウィフト3

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

    for annotation in myMapView.annotations { 
     myMapView.view(for: annotation)?.isHidden = !annotationVisible 
    } 
} 
+1

ありがとうございました...これはトリックでした! – Geniouse

関連する問題