NavigationViewControllerDelegate
public protocol NavigationViewControllerDelegate
The NavigationViewControllerDelegate
provides methods for configuring the map view shown by a NavigationViewController
and responding to the cancellation of a navigation session.
-
Called when the user exits a route and dismisses the navigation view controller by tapping the Cancel button.
Declaration
Swift
@objc optional func navigationViewControllerDidCancelNavigation(_ navigationViewController: NavigationViewController)
-
Called when the user arrives at the destination waypoint for a route leg.
This method is called when the navigation view controller arrives at the waypoint. You can implement this method to prevent the navigation view controller from automatically advancing to the next leg. For example, you can and show an interstitial sheet upon arrival and pause navigation by returning
false
, then continue the route when the user dismisses the sheet. If this method is unimplemented, the navigation view controller automatically advances to the next leg when arriving at a waypoint.Postcondition
If you returnfalse
within this method, you must manually advance to the next leg: obtain the value of therouteController
and itsRouteController.routeProgress
property, then increment theRouteProgress.legIndex
property.Declaration
Swift
@objc optional func navigationViewController(_ navigationViewController: NavigationViewController, didArriveAt waypoint: Waypoint) -> Bool
Parameters
navigationViewController
The navigation view controller that has arrived at a waypoint.
waypoint
The waypoint that the user has arrived at.
Return Value
True to automatically advance to the next leg, or false to remain on the now completed leg.
-
Returns whether the navigation view controller should be allowed to calculate a new route.
If implemented, this method is called as soon as the navigation view controller detects that the user is off the predetermined route. Implement this method to conditionally prevent rerouting. If this method returns
true
,navigationViewController(_:willRerouteFrom:)
will be called immediately afterwards.Declaration
Swift
optional func navigationViewController(_ navigationViewController: NavigationViewController, shouldRerouteFrom location: CLLocation) -> Bool
Parameters
navigationViewController
The navigation view controller that has detected the need to calculate a new route.
location
The user’s current location.
Return Value
True to allow the navigation view controller to calculate a new route; false to keep tracking the current route.
-
Called immediately before the navigation view controller calculates a new route.
This method is called after
navigationViewController(_:shouldRerouteFrom:)
is called, simultaneously with theRouteControllerWillReroute
notification being posted, and beforenavigationViewController(_:didRerouteAlong:)
is called.Declaration
Swift
optional func navigationViewController(_ navigationViewController: NavigationViewController, willRerouteFrom location: CLLocation)
Parameters
navigationViewController
The navigation view controller that will calculate a new route.
location
The user’s current location.
-
Called immediately after the navigation view controller receives a new route.
This method is called after
navigationViewController(_:willRerouteFrom:)
and simultaneously with theRouteControllerDidReroute
notification being posted.Declaration
Swift
optional func navigationViewController(_ navigationViewController: NavigationViewController, didRerouteAlong route: Route)
Parameters
navigationViewController
The navigation view controller that has calculated a new route.
route
The new route.
-
Called when the navigation view controller fails to receive a new route.
This method is called after
navigationViewController(_:willRerouteFrom:)
and simultaneously with theRouteControllerDidFailToReroute
notification being posted.Declaration
Swift
optional func navigationViewController(_ navigationViewController: NavigationViewController, didFailToRerouteWith error: Error)
Parameters
navigationViewController
The navigation view controller that has calculated a new route.
error
An error raised during the process of obtaining a new route.
-
Returns an
MGLStyleLayer
that determines the appearance of the route line.If this method is unimplemented, the navigation map view draws the route line using an
MGLLineStyleLayer
.Declaration
Swift
@objc optional func navigationMapView(_ mapView: NavigationMapView, routeStyleLayerWithIdentifier identifier: String, source: MGLSource) -> MGLStyleLayer?
-
Returns an
MGLStyleLayer
that determines the appearance of the route line’s casing.If this method is unimplemented, the navigation map view draws the route line’s casing using an
MGLLineStyleLayer
whose width is greater than that of the style layer returned bynavigationMapView(_:routeStyleLayerWithIdentifier:source:)
.Declaration
Swift
@objc optional func navigationMapView(_ mapView: NavigationMapView, routeCasingStyleLayerWithIdentifier identifier: String, source: MGLSource) -> MGLStyleLayer?
-
Returns an
MGLShape
that represents the path of the route line.If this method is unimplemented, the navigation map view represents the route line using an
MGLPolylineFeature
based onroute
’scoordinates
property.Declaration
Swift
@objc optional func navigationMapView(_ mapView: NavigationMapView, shapeDescribing route: Route) -> MGLShape?
-
Returns an
MGLShape
that represents the path of the route line’s casing.If this method is unimplemented, the navigation map view represents the route line’s casing using an
MGLPolylineFeature
identical to the one returned bynavigationMapView(_:shapeDescribing:)
.Declaration
Swift
@objc optional func navigationMapView(_ mapView: NavigationMapView, simplifiedShapeDescribing route: Route) -> MGLShape?
-
Returns an
MGLShape
that represents the destination waypoints along the route (that is, excluding the origin).If this method is unimplemented, the navigation map view represents the route waypoints using
navigationMapView(_:shapeFor:)
.Declaration
Swift
@objc optional func navigationMapView(_ mapView: NavigationMapView, shapeFor waypoints: [Waypoint]) -> MGLShape?
-
Called when the user taps on the route.
Declaration
Swift
@objc optional func navigationMapView(_ mapView: NavigationMapView, didTap route: Route)
Parameters
mapView
The map view of the NavigationViewController
route
The route (on the map) that was tapped.
-
Return an
MGLAnnotationImage
that represents the destination marker.If this method is unimplemented, the navigation map view will represent the destination annotation with the default marker.
Declaration
Swift
@objc optional func navigationMapView(_ mapView: MGLMapView, imageFor annotation: MGLAnnotation) -> MGLAnnotationImage?
-
Returns a view object to mark the given point annotation object on the map.
The user location annotation view can also be customized via this method. When annotation is an instance of
MGLUserLocation
, return an instance ofMGLUserLocationAnnotationView
(or a subclass thereof). Note that, whenNavigationMapView.tracksUserCourse
is set totrue
, the map view uses a distinct user course view; to customize it, set theNavigationMapView.userCourseView
property of the map view returned by this view controller’smapView
property.Declaration
Swift
@objc optional func navigationMapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView?
-
Called when the user opens the feedback form.
Declaration
Swift
@objc optional func navigationViewControllerDidOpenFeedback(_ viewController: NavigationViewController)
-
Called when the user dismisses the feedback form.
Declaration
Swift
@objc optional func navigationViewControllerDidCancelFeedback(_ viewController: NavigationViewController)
-
Called when the user sends feedback.
Declaration
Swift
@objc optional func navigationViewController(_ viewController: NavigationViewController, didSend feedbackId: String, feedbackType: FeedbackType)
Parameters
viewController
The navigation view controller that reported the feedback.
feedbackId
A UUID string used to identify the feedback event.
feedbackType
The type of feedback event that was sent.
-
Returns the center point of the user course view in screen coordinates relative to the map view.
Declaration
Swift
@objc optional func navigationViewController(_ navigationViewController: NavigationViewController, mapViewUserAnchorPoint mapView: NavigationMapView) -> CGPoint