경로 계획하기

앱에서 사용자에게 제공하는 경로를 계획하고 싶을 때가 있습니다. Routes API (또는 Routes Preferred API)의 경로 토큰은 계획된 경로에 대한 두 가지 사항:

  • 경로의 다중선

  • 경로 목표

예를 들어 다음은 사용할 수 있는 라우팅 목표의 몇 가지 예입니다.

  • 배달까지 걸리는 시간 최소화: 음식을 배달하는 비즈니스는 시간을 절약할 수 있습니다.

  • 이동 시간 또는 연료 소비 최소화: 물류 비즈니스에서는 드라이버의 효율성을 개선하고 연료 비용을 절감합니다.

  • 목적지까지 걸리는 시간 최소화: 서비스 디스패치 작업은 목적지까지 걸리는 시간 최소화 작업자를 작업 요청에 가져오는 데 걸리는 시간을 최소화합니다.

  • 비용 절감 및 안전 개선: 차량 공유 비즈니스에서 탑승자에게 비용이 저렴하고 안전을 위해 특정 구역을 제외하는 경로 있습니다.

경로 토큰을 사용하여 경로를 계획하는 방법에 대한 자세한 내용은 다음을 참조하세요. 경로 토큰을 요청합니다.

경로 목표에 경로 토큰을 사용하는 이유

Routes 또는 Routes Preferred API의 경로 토큰을 사용하면 제어권을 부여하는 데 사용됩니다.

  • Navigation SDK에서 사용할 경로 미리 계획 할 수 있습니다.

  • Navigation SDK에서 사용할 최적의 경로를 선택합니다. Routes API에서 경로를 생성할 때 경로 토큰을 요청하면 생성된 각 경로에 대한 경로 토큰을 가져옵니다. 그런 다음 을 Navigation SDK를 지원합니다.

  • 도착예정시간과 거리 등을 포함하여 미리 요금을 예측하세요. 실제 비용과 시간은 다를 수 있지만 이 추정은 예상 및 실제 경로 비용

  • 에코 경로 또는 최단 경로 등 고급 경로 목표 지정 있습니다.

Routes API 경로 토큰의 작동 방식

Routes API 또는 Routes Preferred API를 사용할 수 있습니다. 경로 목표를 사용하여 경로를 계획합니다. Routes API는 방법을 안내하기 위해 Navigation SDK에 전달할 수 있는 경로 토큰 차량의 경로를 지정합니다.

Routes API:

  1. Routes API는 경로가 포함된 암호화된 경로 토큰을 반환합니다. 경로를 지정할 수 있습니다.

  2. 경로 토큰을 Navigation SDK에 전달합니다.

  3. Navigation SDK가 경로를 검색함 또는 경로가 검색되지 않는 경우 최적의 일치 항목을 검색하므로 있습니다.

  4. 경로를 운전하는 동안 교통체증이나 도로 상황이 변경되거나 차량이 계획된 경로에서 벗어나면 수정된 경로가 계속해서 최적의 경로를 일치시키려고 시도합니다.

이 과정을 통해 실제 경로와 계획된 경로가 얼마나 가까운지 알 수 있습니다.

계획된 경로를 정확하게 따를 수 없는 이유

계획된 경로 및 경로 목표는 따라야 할 가이드라인이라고 생각해 보세요. 규범적인 것은 아닙니다 계획한 경로와 도로상의 차이로 인해 가이드 내비게이션에서 제공하는 경로 변경 후 변경된 조건, 시작 위치 또는 기타 매개변수가 포함됩니다. 계획된 경로를 만들었습니다. 이 차이로 인해 다른 중요한 경로 중에서도 거리와 도착예정시간에 대한 계획된 목표와 실제 목표 있습니다.

경로 토큰을 사용하여 경로 계획

경로 토큰을 생성한 다음 Navigation SDK를 빌드합니다.

1단계: Routes 또는 Routes Preferred API를 사용하여 경로 토큰 만들기

  1. 다음 방법 중 하나를 사용하여 경로 토큰을 요청합니다.

    • Routes API: computeRoutes 자세한 내용은 Routes API에서 경로 토큰을 요청하는 방법은 경로 계산경로 토큰을 요청합니다.

    • Routes Preferred API: computeCustomRoutes 자세한 내용은 Routes Preferred API에서 경로 토큰을 요청하는 방법은 경로를 계획합니다.

  2. 경로 사용을 위한 요구사항을 충족하도록 경로 요청을 설정합니다. 토큰:

    • travel_modeDRIVING로 설정합니다.
    • routing_preferenceTRAFFIC_AWARE 또는 TRAFFIC_AWARE_OPTIMAL로 설정합니다.
    • 통과 경유지 사용 금지

2단계: Navigation SDK에 경로 토큰 전달

  1. 경로 토큰 저장: Navigation SDK에서 문자열을 설정합니다. 경로 토큰을 저장합니다 예를 들면 다음과 같습니다.

    String routeToken = "route token returned by Routes API";

    반환된 경로 토큰의 예는 다음과 같습니다.

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. 다음을 사용하여 Navigation SDK에 경로 토큰을 전달합니다. Navigator.setDestinations 메서드, 동일한 대상 지정 경유지:

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    예를 들면 다음과 같습니다.

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();

Navigator.setDestinations 메서드는 요청 상태를 반환합니다. 차량의 위치에서 지정된 목적지까지의 경로를 찾으면 RouteStatus.OK을 반환합니다.

이 방법에 대한 자세한 내용은 Navigator.setDestinations

다음 코드 예는 다음을 사용하여 계획된 경로를 지정하는 방법을 보여줍니다. 경로 토큰

    ArrayList <Waypoint> destinations = Lists.newArrayList();
    Waypoint waypoint1 =
       Waypoint.builder()
          .setLatLng(10, 20)
          .setTitle("title")
          .setVehicleStopover(true)
          .build();
    destinations.add(waypoint1);
    Waypoint waypoint2 =
       Waypoint.builder()
          .setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
          .setTitle("title")
          .setVehicleStopover(true)
           .build()
    destinations.add(waypoint2);

    String routeToken = "route token returned by Routes API";

    CustomRoutesOptions customRoutesOptions =
       CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .build();

    // Existing flow to get a Navigator.
    NavigationApi.getNavigator(...);

    // Existing flow for requesting routes.
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions);

    // Or with display options.
    DisplayOptions displayOptions = new DisplayOptions();

    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions, displayOptions);

경로 토큰과 Navigation SDK가 상호작용하는 방식

다음은 Navigation SDK가 생성한 경로와 계획된 다음과 같이 상호작용합니다.

  • 이전에 설정한 모든 대상을 재정의합니다.

  • 차량 시작 위치를 사용합니다.

  • 도로 및 교통상황에 따라 조정합니다. 자세한 내용은 계획된 경로를 정확하게 따르지 않는 이유

  • 다음 라우팅 관련 옵션은 불필요하다고 무시합니다.

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • 다음을 참고하세요.

    • 경유지 관련 옵션(예: 도로변 환경설정)

    • 경로 목표. Navigation SDK가 를 변경하면 반환되는 경로를 조정할 때 지정된 경로 목표를 사용합니다. 경로 토큰을 요청합니다. 따라서 이전 버전과 동일한 경유지 관련 옵션입니다.