Safety locations
Before you start, check the Starting navigation guide
Project setup
- Before proceeding, follow the Quickstart guide for Maps and the Quickstart guide for Navigation to create the
TomTomNavigationobject. These are essential for using the Navigation Visualization Compose module, which displays Safety Locations during the navigation session. - Add the Navigation Visualization Compose dependency to the
build.gradlefile of your application module, then synchronize the project:implementation("com.tomtom.sdk.maps.visualization:navigation-compose:2.1.2") - Create the
NavigationVisualizationInfrastructurein the data layer of your application:1// The route plan2val routes = MutableStateFlow<List<Route>>(emptyList())34// The ID of the selected route5val selectedRouteId = MutableStateFlow<RouteId?>(null)67val navigationVisualizationInfrastructure = NavigationVisualizationInfrastructure(8 routingVisualizationDataProvider = flowOf(9 RoutingVisualizationDataProvider(10 routes = routes,11 selectedRouteId = selectedRouteId,12 ),13 ),14 navigationVisualizationDataProvider = flowOf(15 NavigationVisualizationDataProvider(16 tomtomNavigation = tomtomNavigation,17 ),18 ),19) - Create the
NavigationVisualizationcomposable, with theHorizonVisualizationcomposable as a child node and the corresponding states:1TomTomMap(2 infrastructure = viewModel.mapDisplayInfrastructure,3 state = mapViewState,4) {5 val navigationVisualizationState = rememberNavigationVisualizationState()6 val horizonVisualizationState = rememberHorizonVisualizationState()78 NavigationVisualization(9 infrastructure = viewModel.navigationVisualizationInfrastructure,10 state = navigationVisualizationState,11 ) {12 HorizonVisualization(13 state = horizonVisualizationState,14 )15 }16}
Safety location types
All SafetyLocationTypes are enabled, by default. You can hide specific types of safety locations by using the HorizonVisualizationState:
1val horizonVisualizationState = rememberHorizonVisualizationState()2horizonVisualizationState.safetyLocationVisualization.hiddenSafetyLocationTypes = setOf(3 SafetyLocationType.DangerZone,4 SafetyLocationType.AverageSpeedZone,5 SafetyLocationType.RedLightSpeedCamera,6)
Speed and danger zones on the route
Speed and danger zones are visualized as tubes with outlines along the route. Both zones include a Start Marker indicating the beginning of the zone and an End Marker showing where it ends.
Speed zone
Danger zone
Safety locations style customization
When creating the NavigationVisualizationState that is passed to the NavigationVisualization composable, you can pass a NavigationVisualizationStyleConfig to define custom styling. If not provided, the default style is applied. To customize the appearance of safety locations, use SafetyLocationStyle. Here’s how to pass your custom style:
1val navigationVisualizationState = rememberNavigationVisualizationState(2 styleConfig = NavigationVisualizationStyleConfig {3 safetyLocationStyle = customSafetyLocationStyle4 },5)
Learn more
Since you have learned how to set up and display Safety locations, here are recommendations for the next steps: