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)
        }
    }