• 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.

    See more

    Declaration

    Swift

    @objc(MBNavigationService)
    public protocol NavigationService : CLLocationManagerDelegate, EventsManagerDataSource, RouterDataSource
  • A concrete implementation of the NavigationService protocol.

    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.

    See more

    Declaration

    Swift

    @objc(MBNavigationService)
    public class MapboxNavigationService : NSObject, NavigationService
    extension MapboxNavigationService: CLLocationManagerDelegate
    extension MapboxNavigationService: RouterDelegate
  • A RouteController tracks the user’s progress along a route, posting notifications as the user reaches significant points along the route. On every location update, the route controller evaluates the user’s location, determining whether the user remains on the route. If not, the route controller calculates a new route.

    RouteController is responsible for the core navigation logic whereas NavigationViewController is responsible for displaying a default drop-in navigation UI.

    See more

    Declaration

    Swift

    @objc(MBRouteController)
    open class RouteController : NSObject
    extension RouteController: Router
  • RouteProgress stores the user’s progress along a route.

    See more

    Declaration

    Swift

    @objc(MBRouteProgress)
    open class RouteProgress : NSObject
  • RouteLegProgress stores the user’s progress along a route leg.

    See more

    Declaration

    Swift

    @objc(MBRouteLegProgress)
    open class RouteLegProgress : NSObject
    extension RouteLegProgress: Encodable
  • RouteStepProgress stores the user’s progress along a route step.

    See more

    Declaration

    Swift

    @objc(MBRouteStepProgress)
    open class RouteStepProgress : NSObject