From b53f93ef13dfcd3f911a61e3685a280e6a17f25f Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 25 Jun 2024 14:42:37 -0700 Subject: [PATCH] Restore the ability to init NavVC without animations. Prior to #54, the NavigationViewController could only be used modally. With #54, you can switch between "map mode" and "navigation mode". To do so, an animation was introduced for the sake of smoothly transitioning from "map mode" to "navigation mode". However, if you are still using the NavigationViewController modally, this animation might interfere with other things you were doing - like setting the camera. --- CHANGELOG.md | 15 +++++---------- MapboxNavigation/NavigationViewController.swift | 8 ++++---- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3519020..317bc397 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,19 +2,14 @@ ## Unreleased * Start & Stop Navigation in existing Map - - Removed: `NavigationViewController(for route: Route, dayStyle: Style, routeController: RouteController? = nil, locationManager: NavigationLocationManager? = nil, voiceController: RouteVoiceController? = nil)` use `NavigationViewController(dayStyleURL: URL, nightStyleURL: URL? = nil,directions: Directions = .shared, voiceController: RouteVoiceController = RouteVoiceController())` followed by `startNavigation(with route: Route)` instead. - - To simulate a route, pass a `SimulatedLocationManager` to `startNavigation()` function: + - Removed: `NavigationViewController(for route: Route, dayStyle: Style, routeController: RouteController? = nil, locationManager: NavigationLocationManager? = nil, voiceController: RouteVoiceController? = nil)` use `NavigationViewController(dayStyleURL: URL, nightStyleURL: URL? = nil,directions: Directions = .shared, voiceController: RouteVoiceController = RouteVoiceController())` followed by `startNavigation(with route: Route, animated: Bool)` instead. + - To simulate a route, pass a `SimulatedLocationManager` to `startNavigation()` function: ```swift let vc = NavigationViewController(dayStyleURL: AppConfig().tileserverStyleUrl) - - if Env.current.simulateLocationForTesting { - let simulatedLocationManager = SimulatedLocationManager(route: route) - simulatedLocationManager.speedMultiplier = 5 - vc.startNavigation(with: route, locationManager: simulatedLocationManager) - } else { - vc.startNavigation(with: route) - } + let simulatedLocationManager = SimulatedLocationManager(route: route) + simulatedLocationManager.speedMultiplier = 5 + vc.startNavigation(with: route, animated: false, locationManager: simulatedLocationManager) ``` ## 3.0.0 (Jun 15, 2024) diff --git a/MapboxNavigation/NavigationViewController.swift b/MapboxNavigation/NavigationViewController.swift index a2a035c1..a17fde98 100644 --- a/MapboxNavigation/NavigationViewController.swift +++ b/MapboxNavigation/NavigationViewController.swift @@ -422,7 +422,7 @@ open class NavigationViewController: UIViewController { // MARK: - NavigationViewController - public func startNavigation(with route: Route, routeController: RouteController? = nil, locationManager: NavigationLocationManager? = nil) { + public func startNavigation(with route: Route, animated: Bool, routeController: RouteController? = nil, locationManager: NavigationLocationManager? = nil) { if let locationManager { self.locationManager = locationManager } @@ -431,7 +431,7 @@ open class NavigationViewController: UIViewController { } self.route = route - self.mapViewController.navigationView.showUI(animated: true) + self.mapViewController.navigationView.showUI(animated: animated) self.mapViewController.destination = route.legs.last?.destination self.routeController?.usesDefaultUserInterface = true @@ -496,8 +496,8 @@ open class NavigationViewController: UIViewController { let directions = routeController.directions let route = routeController.routeProgress.route let navigationViewController = NavigationViewController(dayStyle: DayStyle(demoStyle: ()), nightStyle: NightStyle(demoStyle: ()), directions: directions) - navigationViewController.startNavigation(with: route, routeController: routeController, locationManager: locationManager) - + navigationViewController.startNavigation(with: route, animated: true, routeController: routeController, locationManager: locationManager) + window.rootViewController?.topMostViewController()?.present(navigationViewController, animated: true, completion: { navigationViewController.isUsedInConjunctionWithCarPlayWindow = true })