func calculateRoute(request: MKDirections.Request) async {
   let directions = MKDirections(request: request)
   do {
      let results = try await directions.calculate()
      await MainActor.run {
         let routes = results.routes
         let route = routes.first!
         self.mapView.addOverlay(route.polyline, level: .aboveRoads)

         let annotation1 = MKPointAnnotation()
         annotation1.coordinate = self.origin.placemark.coordinate
         annotation1.title = "Apple Store"
         self.mapView.addAnnotation(annotation1)

         let annotation2 = MKPointAnnotation()
         annotation2.coordinate = self.destination.placemark.coordinate
         annotation2.title = "Grand Central Terminal"
         self.mapView.addAnnotation(annotation2)

         self.mapView.showAnnotations([annotation1, annotation2], animated: true)
      }
   } catch {
      print("Error: \(error)")
   }
}