title: Don't re-add mapview after is loaded in viewdidload
body: <p>I have created function caricamappa() to loading map view with my mapbox map, and into Custompointannotation there is a control for add and remove annotation with Bool control, with a button i want to caricamappa() add and remove annotation with force Bool and its work but i don't want to re-add subview(mapview) into my app, is it possible to refresh a view without adding another and hide/show annotation? thanks</p>
  
  <pre><code>func carica_mappa() {
      // Fill in the next line with your style URL from Mapbox Studio.
      let styleURL = NSURL(string: "mapbox:***")
      let mapView = MGLMapView(frame: view.bounds,
                               styleURL: styleURL as URL?)
      mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
  
      // Set the map’s center coordinate and zoom level.
      mapView.setCenter(CLLocationCoordinate2D(latitude: 44.370417,
                                               longitude: 7.411713),
                        zoomLevel: 13, animated: false)
      view.addSubview(mapView)
  
      mapView.userTrackingMode = .followWithHeading
      // Set the delegate property of our map view to `self` after instantiating it.
      mapView.delegate = self
  
      let uno = CustomPointAnnotation(coordinate: CLLocationCoordinate2DMake(44.376362, 7.396907),
                                      title: "**",
                                      subtitle: "**",
                                      controllo: visible)
      // Set the custom `image` and `reuseIdentifier` properties, later used in the `mapView:imageForAnnotation:` delegate method.
      uno.reuseIdentifier = "montagna"
      uno.image = UIImage(named: "montagna")
      if uno.controllo == true {
          mapView.addAnnotation(uno)
  
      }
      else {
          mapView.removeAnnotation(uno)
      }
  }
      func mapView(_ mapView: MGLMapView, imageFor annotation: MGLAnnotation) -&gt; MGLAnnotationImage? {
          if let point = annotation as? CustomPointAnnotation,
              let image = point.image,
              let reuseIdentifier = point.reuseIdentifier {
  
              if let annotationImage = mapView.dequeueReusableAnnotationImage(withIdentifier: reuseIdentifier) {
                  // The annotatation image has already been cached, just reuse it.
                  return annotationImage
              } else {
                  // Create a new annotation image.
                  return MGLAnnotationImage(image: image, reuseIdentifier: reuseIdentifier)
              }
          }
  
          // Fallback to the default marker image.
          return nil
      }
  
  
  
  
  
      func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -&gt; Bool {
          // Always allow callouts to popup when annotations are tapped.
          return true
      }
  
  
  
  
  
  override func viewDidLoad() {
      super.viewDidLoad()
      carica_mappa()
    }
  </code></pre>