         return view
     }
 }
+
+protocol MapViewControllerDelegate {
+    func mapViewController(_ controller: MapViewController, didUpdateVisibleZones zones: [Zone])
+}

            pulley.setDrawerPosition(position: .collapsed)
        }
    }

    func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
        // Update camera (if altitude is higher than expected)
        let existingCamera = mapView.camera
        let altitude = min(existingCamera.altitude, self.mapMaxAltitude)

    @IBOutlet var mapView: MKMapView!
    
    private let mapMaxAltitude: CLLocationDistance = 500.0
    var trackUserLocation: Bool = false
    
    var delegate: MapViewControllerDelegate? = nil
    
    var zones: [Zone] = [] {
        didSet {
