NavigationVisualization
public protocol NavigationVisualization : AnyObject, RoutingVisualization
Entry point for all methods related to the navigation visualization module.
Instances of NavigationVisualization
are created using create(map:navigation:styleConfiguration:)
.
NavigationVisualization
shouldn’t be conformed outside the TomTom SDK frameworks.
Inheritance from TomTomSDKCommon/ConformanceLocked
makes it impossible to create NavigationVisualization
instances outside the TomTomSDK frameworks.
You should call methods on these instances from the main thread only, otherwise an exception can occur.
A NavigationVisualization
instance is used by first providing a RoutePlan
with displayRoutePlan(:_)
.
After that, the TomTomSDKRoute/Route
s contained in the RoutePlan
are displayed on the map, and you can use setActiveRoute(_:)
to select a route to navigate.
You can access the list of route primitives displayed on the map using routes
.
The selected route and the alternative routes are styled with the properties contained in the StyleConfiguration
provided to create(map:navigation:styleConfiguration:)
.
After selecting the type of navigation guidance with the property guidanceType
, you can start the navigation session with TomTomSDKNavigation/Navigation/start()
.
Once the navigation session is started, the route that is set becomes the active route.
When you’re finished using NavigationVisualization
, call TomTomSDKNavigation/Navigation/stop()
.
You can then call clearRoutePlan()
to remove all the primitives that have been added to the map by the module.
Visualization of on-route traffic incidents can be enabled or disabled using areTrafficIncidentsEnabled
.
If a TomTomSDKRoute/Route
contained in the RoutePlan
has traffic data available and areTrafficIncidentsEnabled
is true
, traffic incidents are displayed on the map on top of that TomTomSDKRoute/Route
.
You can access the list of traffic incidents that are on a route using trafficIncidents(on:)
.
The navigation visualization module subscribes to certain listeners during its life cycle, so that it can react automatically to important events:
TomTomSDKNavigation/NavigationStateChangeObserver
- Notifies the module when a navigation state changes. The module reacts by removing the alternative routes from the map, setting the camera tracking mode toTomTomSDKMapsDisplay/CameraTrackingMode/followNorthUp
, and setting a default tilt angle.TomTomSDKNavigation/NavigationProgressObserver
- Notifies the module as the driver progresses on the route. The module reacts by updating the visual cue of the progress on the route (i.e., the grayed-out region behind the vehicle).TomTomSDKNavigation/GuidanceUpdateObserver
- Notifies the module when new on-route instructions are available. The new instructions are provided along with the notification. The module reacts by updating the route with the new instructions.TomTomSDKNavigation/NavigationDestinationArrivalObserver
- Notifies the module when the driver reaches the destination. The module reacts by removing the route from the map, setting camera tracking mode toTomTomSDKMapsDisplay/CameraTrackingMode/followNorthUp
, and setting the default 2D view.TomTomSDKMapDisplay/CameraEventObserver
- Notifies the module when a parameter of the camera changes. The module reacts by, for example, showing or hiding certain traffic markers (seemarkerVisibilityByCategory
).
-
Configures the camera tracking mode and updates it if needed.
This function allows you to set camera configuration parameters for a given tracking mode. The configuration gets updated immediately if the provided mode matches the current mode active on the map.
Note
If the current camera tracking mode on the map matches the provided mode, the map’s camera tracking mode will be updated with the new configuration. Otherwise, the configuration is stored internally and will be applied when that mode is activated later on.
Declaration
Swift
func setCameraTrackingMode(_ trackingMode: TomTomSDKMapDisplay.CameraTrackingMode)
Parameters
trackingMode
The
CameraTrackingMode
value that specifies the desired camera tracking mode configuration. -
Selects the type of guidance to be used when a navigation session starts.
When the type
regular
is selected, the module presents regular navigation guidance. When the typelaneLevel
is selected, the module is instructed to present lane-level guidance, but it may still present regular navigation guidance. This occurs because of an internal fallback mechanism that switches from lane-level guidance mode to regular guidance mode when no lane-level data is available. The module switches back to lane-level guidance mode as soon as lane-level data is available again. Note that this property is unaffected when this fallback mechanism activates.laneLevel
shouldn’t be used, unless the lane-level style is enabled.The default is
regular
.Declaration
Swift
var guidanceType: GuidanceType { get set }
-
Sets whether the route instructions should be visible or hidden during navigating on route. This property can be used dynamically, such as before or after the route planning phase, which means the changes will be applied immediately. The route instructions are never visible outside
TomTomSDKNavigation/NavigationState/activeGuidance
.The default is true.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
var areRouteInstructionsVisible: Bool { get set }
-
Object to address visualization of safety locations such as configuration, user interaction, etc.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
var safetyLocationVisualization: SafetyLocationVisualization { get }
-
Manages the visualization of better route proposals, e.g., visibility.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
var betterRoute: BetterRouteVisualization { get }
-
Selects the preferred system of measurement within
NavigationVisualization
. see:TomTomSDKCommon.UnitsSystem
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
var unitSystem: UnitsSystem { get set }