Get Direction
DirectionClient is used to generate routes based on your needs. Here are the steps to integrate DiretionClient in your app:
-
Step 1: Initialize a DirectionClient. Please init SDK instance before acquire DirectionClient, like mentioned in Show MapView section.
1 2
//Depends on the use case, you can hold directionClient on your fragment or activity or applicaiton private DirectionClient directionClient = DirectionClient.Factory.hybridClient();
1 2
//Depends on the use case, you can hold directionClient on your fragment or activity or applicaiton private val directionClient: DirectionClient = DirectionClient.Factory.hybridClient()
-
Step 2: Create a Routing Request
1 2 3 4 5 6
RouteRequest request = (new RouteRequest.Builder( new GeoLocation(37.405022D, -122.061887D), new GeoLocation(37.39962D, -121.977785D))) .contentLevel(ContentLevel.FULL) .routeCount(2) .build();
1 2 3 4 5 6
val request = RouteRequest.Builder( GeoLocation(37.405022, -122.061887), GeoLocation(37.39962, -121.977785) ).contentLevel(ContentLevel.FULL) .routeCount(2) .build()
-
Step 3: Create a request task and execute
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Task<RouteResponse> task = directionClient.createRoutingTask(request); task.runAsync(response -> { { if (response.getResponse().getStatus() == DirectionErrorCode.OK) { Log.i( "SecondFragment. routing", "route request success! routes: " + response.getResponse().getResult().size() ); Route route = response.getResponse().getResult().get(0); // TODO present the route on map or start navigation with the route // ... } else { Log.e("route requesting", "routing failed"); } } });
1 2 3 4 5 6 7 8 9
val task = directionClient.createRoutingTask(request) task.runAsync { response -> if (response.response.status == DirectionErrorCode.OK) { //update UI Viewmodel with route response // route.postValue(response.response.result?.let { if (it.size > 0) it[0] else null }) } else { // route.postValue(null) } }