NavigationService
public protocol NavigationService : CLLocationManagerDelegate, EventsManagerDataSource, RouterDataSource
A navigation service coordinates various nonvisual components that track the user as they navigate along a predetermined route. You use MapboxNavigationService
, which conforms to this protocol, either as part of NavigationViewController
or by itself as part of a custom user interface. A navigation service calls methods on its delegate
, which conforms to the NavigationServiceDelegate
protocol, whenever significant events or decision points occur along the route.
A navigation service controls a NavigationLocationManager
for determining the user’s location, a Router
that tracks the user’s progress along the route, a Directions
service for calculating new routes (only used when rerouting), and a NavigationEventsManager
for sending telemetry events related to navigation or user feedback.
NavigationViewController
comes with a MapboxNavigationService
by default. You may override it to customize the Directions
service or simulation mode. After creating the navigation service, pass it into NavigationOptions(styles:navigationService:voiceController:topBanner:bottomBanner:)
, then pass that object into NavigationViewController(for:options:)
.
If you use a navigation service by itself, outside of NavigationViewController
, call start()
when the user is ready to begin navigating along the route.
-
The location manager for the service. This will be the object responsible for notifying the service of GPS updates.
Declaration
Swift
var locationManager: NavigationLocationManager { get }
-
A reference to a MapboxDirections service. Used for rerouting.
Declaration
Swift
var directions: Directions { get }
-
The router object that tracks the user’s progress as they travel along a predetermined route.
Declaration
Swift
var router: Router! { get }
-
The events manager, responsible for all telemetry.
Declaration
Swift
var eventsManager: NavigationEventsManager! { get }
-
The route along which the user is expected to travel, plus its index in the
RouteResponse
, if applicable.Declaration
Swift
var indexedRoute: IndexedRoute { get set }
-
The route along which the user is expected to travel.
Declaration
Swift
var route: Route { get }
-
The simulation mode of the service.
Declaration
Swift
var simulationMode: SimulationMode { get set }
-
The simulation speed-multiplier. Modify this if you desire accelerated simulation.
Declaration
Swift
var simulationSpeedMultiplier: Double { get set }
-
The Amount of time the service will wait until it begins simulation in a poor GPS scenerio. Defaults to 2.5 seconds.
Declaration
Swift
var poorGPSPatience: Double { get set }
-
The navigation service’s delegate, which is informed of significant events and decision points along the route.
To synchronize your application’s state with the turn-by-turn navigation experience, set this property before starting the navigation session.
Declaration
Swift
var delegate: NavigationServiceDelegate? { get set }
-
Starts the navigation service.
Declaration
Swift
func start()
-
Stops the navigation service. You may call
start()
after callingstop()
.Declaration
Swift
func stop()
-
Ends the navigation session. Used when arriving at destination.
Declaration
Swift
func endNavigation(feedback: EndOfRouteFeedback?)
-
Interrogates the navigationService as to whether or not the passed-in location is in a tunnel.
Declaration
Swift
func isInTunnel(at location: CLLocation, along progress: RouteProgress) -> Bool