規劃路線

有時候,您可能會想規劃應用程式為使用者提供的路線。使用 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 APIcomputeRoutes。如要進一步瞭解 在 Routes API 中要求路徑權杖,請參閱 計算路徑 要求路徑權杖

    • Routes Preferred APIcomputeCustomRoutes。如要進一步瞭解 在 Routes Preferred API 中要求路徑權杖,請參閱 規劃路線

  2. 設定路徑要求,以符合使用路徑的必要條件 符記:

    • travel_mode 設為 DRIVING
    • 將「routing_preference」設為「TRAFFIC_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. 使用 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 必須 調整傳回的路徑時,它會使用您指定的路徑目標, 要求路徑權杖因此,您應該使用 您在 Routes API 中指定的路線控點相關選項。