Route Navigation¶
Setup¶
Download the RouteNavigation project
archive file or clone the project with Git
See the Configure Android Example guide.
Run the example¶
In Android Studio, from the File
menu, select Sync Project with Gradle Files
How it works¶
You can open the MainActivity.kt file to see how real navigation along a computed route works.
1private val navigationService = NavigationService()
A NavigationService()
is instantiated.
1private val navigationListener = object : NavigationListener()
2{
3 override fun onNavigationStarted()
4 {
5 SdkCall.execute
6 {
7 mapView?.preferences()?.enableCursor(false)
8 navigationService.getNavigationRoute(this)
9 ?.let { mapView?.preferences()?.routes()?.add(it, true) }
10 followCursor()
11 }
12 }
13}
The NavigationListener
receives event updates during navigation such as
when the destination is reached, or when the route to the desired destination
has been recomputed, because a detour away from the original route was taken.
1fun followCursor(following: Boolean = true)
2{
3 SdkCall.execute
4 {
5 if (!following)
6 {
7 // Stop following the cursor if requested.
8 mapView?.stopFollowingPosition()
9 return@execute
10 }
11 val animation = Animation()
12 animation.setType(EAnimation.AnimationLinear)
13 animation.setDuration(900)
14 // Start following the cursor position using the provided animation.
15 mapView?.startFollowingPosition(animation)
16 }
17}
Function to toggle following the position indicator on the map during navigation,
using mapView?.stopFollowingPosition()
and mapView?.startFollowingPosition()
respectively.
As navigation progresses along the route, the position indicator moves along the route, and when following position is active, the camera follows the indicator, to keep it centered in the view.
1private fun startNavigation()
2{
3 if (!isMapReady) return
4 val hasPermissions =
5 PermissionsHelper.hasPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
6 if (!hasPermissions)
7 {
8 return
9 }
10 val waypoints = arrayListOf(
11 Landmark("Paris", Coordinates(48.8566932, 2.3514616))
12 )
13 navigationService.startNavigation(
14 waypoints,
15 RoutePreferences(),
16 navigationListener,
17 routingProgressListener,
18 )
19}
Function to start real navigation. The destination is Paris, as specified by
the Coordinates
in the Landmark
instance.
The route departure point is the current position of the device, as this
is not a simulation, therefore, permission to access the device position
is required.