Route Instructions¶
In this guide you will learn how to get the text instructions for a computed route.
Setup¶
First, get an API key token, see the Getting Started guide.
Download the Maps & Navigation SDK for Android archive fileDownload the RouteInstructions 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 the route is computed and the text instructions are obtained.
1// Kotlin code
2private val routingService = RoutingService()
3
4val wayPoints = arrayListOf(
5 Landmark("Frankfurt am Main", Coordinates(50.11428, 8.68133)),
6 Landmark("Karlsruhe", Coordinates(49.0069, 8.4037)),
7 Landmark("Munich", Coordinates(48.1351, 11.5820))
8)
9routingService.calculateRoute(wayPoints)
A private val routingService = RoutingService()
instance
is declared.
Two Landmark
instances are defined, one for the departure,
and one for the destination coordinates of the route endpoints.
A route must have at least 2 Landmark instances(waypoints),
but optionally can have more, for any optional additional
waypoints along the route.
Then the routingService.calculateRoute(wayPoints)
function
is used to compute the route.
1routingService.onCompleted = onCompleted@{ routes, reason, _ ->
2 when (val gemError = SdkError.fromInt(reason))
3 {
4 SdkError.NoError ->
5 {
6 // No error encountered, we can handle the results.
7 SdkCall.execute
8 {
9 // Get the main route from the ones that were found.
10 mainRoute = if (routes.size > 0)
11 {
12 routes[0]
13 } else {
14 null
15 }
16 postOnMain { mainRoute?.let { displayRouteInstructions(it) } }
17 }
18 }
When the route computation is complete, routingService.onCompleted = onCompleted@{
the first route, index 0, is selected routes[0]
1fun displayRouteInstructions(route: Route)
2{
3 val instructions = arrayListOf<RouteInstruction>()
4 SdkCall.execute
5 {
6 // Get all the route segments.
7 val segmentList = route.getSegments()
8 if (segmentList != null)
9 {
10 // For each segment, get the route instructions.
11 for (segment in segmentList)
12 {
13 val instructionList = segment.getInstructions() ?: continue
14 for (instruction in instructionList)
15 {
16 instructions.add(instruction)
17 }
18 }
19 }
20 }
val segmentList = route.getSegments()
val instructionList = segment.getInstructions() ?: continue
instructions.add(instruction)