차량의 경로는 시간축을 따라 다음과 같이 분해할 수 있습니다 (방문 횟수가 n이라고 가정).
  |            |            |          |       |  T[2], |        |      |
  | Transition |  Visit #0  |          |       |  V[2], |        |      |
  |     #0     |    aka     |   T[1]   |  V[1] |  ...   | V[n-1] | T[n] |
  |  aka T[0]  |    V[0]    |          |       | V[n-2],|        |      |
  |            |            |          |       | T[n-1] |        |      |
  ^            ^            ^          ^       ^        ^        ^      ^
vehicle    V[0].start   V[0].end     V[1].   V[1].    V[n].    V[n]. vehicle
 start     (arrival)   (departure)   start   end      start    end     end
다음과 같이 구분됩니다.
- 차량 시작 및 종료, 각 방문의 시작 및 종료 (도착 및 출발)와 같은 '정확한 이벤트' 특정 초에 발생합니다.
- '시간 간격'(예: 방문 자체, 방문 간의 전환) 시간 간격의 길이가 0인 경우(즉, 시작과 종료가 같은 초에 있는 경우)도 있지만, 대부분의 경우 길이가 양수입니다.
불변:
- 방문이 n회이면 전환은 n+1회입니다.
- 방문은 항상 그 전의 전환 (동일한 색인)과 그 후의 전환 (색인 + 1)으로 둘러싸여 있습니다.
- 차량 시작 후에는 항상 전환 #0이 뒤따릅니다.
- 차량 종료 앞에는 항상 전환 #n이 표시됩니다.
확대하면 Transition와 Visit 중에 다음과 같은 일이 발생합니다.
---+-------------------------------------+-----------------------------+-->
   |           TRANSITION[i]             |           VISIT[i]          |
   |                                     |                             |
   |  * TRAVEL: the vehicle moves from   |      PERFORM the visit:     |
   |    VISIT[i-1].departure_location to |                             |
   |    VISIT[i].arrival_location, which |  * Spend some time:         |
   |    takes a given travel duration    |    the "visit duration".    |
   |    and distance                     |                             |
   |                                     |  * Load or unload           |
   |  * BREAKS: the driver may have      |    some quantities from the |
   |    breaks (e.g. lunch break).       |    vehicle: the "demand".   |
   |                                     |                             |
   |  * WAIT: the driver/vehicle does    |                             |
   |    nothing. This can happen for     |                             |
   |    many reasons, for example when   |                             |
   |    the vehicle reaches the next     |                             |
   |    event's destination before the   |                             |
   |    start of its time window         |                             |
   |                                     |                             |
   |  * DELAY: *right before* the next   |                             |
   |    arrival. E.g. the vehicle and/or |                             |
   |    driver spends time unloading.    |                             |
   |                                     |                             |
---+-------------------------------------+-----------------------------+-->
   ^                                     ^                             ^
V[i-1].end                           V[i].start                    V[i].end
마지막으로 전환 중에 TRAVEL, BREAKS, DELAY, WAIT를 배치하는 방법은 다음과 같습니다.
- 겹치지 않습니다.
- DELAY는 고유하며 다음 방문 (또는 차량 종료) 직전의 연속된 시간으로 여야 합니다. 따라서 시작 시간과 종료 시간을 알기 위해서는 지연 시간을 알면 충분합니다.
- BREAKS는 중복되지 않는 연속된 시간입니다. 응답은 각 시점의 시작 시간과 길이를 지정합니다.
- TRAVEL 및 WAIT는 '선점 가능': 이 전환 중에 여러 번 중단될 수 있습니다. 클라이언트는 이동이 '가능한 한 빨리' 이루어지고 '대기'가 남은 시간을 채운다고 가정할 수 있습니다.
(복잡한) 예시:
                               TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
  ||     |       |           |       |           |         |         ||
  ||  T  |   B   |     T     |       |     B     |         |    D    ||
  ||  r  |   r   |     r     |   W   |     r     |    W    |    e    ||
  ||  a  |   e   |     a     |   a   |     e     |    a    |    l    ||
  ||  v  |   a   |     v     |   i   |     a     |    i    |    a    ||
  ||  e  |   k   |     e     |   t   |     k     |    t    |    y    ||
  ||  l  |       |     l     |       |           |         |         ||
  ||     |       |           |       |           |         |         ||
--++-----------------------------------------------------------------++-->
| JSON 표현 | 
|---|
| { "vehicleIndex": integer, "vehicleLabel": string, "vehicleStartTime": string, "vehicleEndTime": string, "visits": [ { object ( | 
| 필드 | |
|---|---|
| vehicleIndex | 
 경로를 수행하는 차량으로, 소스  | 
| vehicleLabel | 
 이 경로를 수행하는 차량의 라벨입니다. 지정된 경우  | 
| vehicleStartTime | 
 차량이 경로를 시작하는 시간입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 0, 3, 6 또는 9자리인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면  | 
| vehicleEndTime | 
 차량이 경로를 완료한 시간입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 0, 3, 6 또는 9자리인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면  | 
| visits[] | 
 경로를 나타내는 순서가 지정된 방문 시퀀스입니다. visits[i] 는 경로의 i번째 방문입니다. 이 필드가 비어 있으면 차량이 사용되지 않는 것으로 간주됩니다. | 
| transitions[] | 
 경로의 전환 목록(순서 지정)입니다. | 
| hasTrafficInfeasibilities | 
 
 트래픽으로 인해 예상 이동 시간  | 
| routePolyline | 
 경로의 인코딩된 다중선 표현입니다. 이 필드는  | 
| breaks[] | 
 이 경로를 운행하는 차량에 예약된 휴식 시간입니다.  | 
| metrics | 
 이 경로의 기간, 거리, 부하 측정항목입니다.  | 
| vehicleFullness | 
 한도가 적용된 측정항목이 각 차량 한도에 얼마나 근접한지 계산하는  실험용: 이 필드의 동작 또는 존재 여부는 향후 변경될 수 있습니다. | 
| routeCosts | 
 비용 관련 요청 필드별로 나눠진 경로의 비용입니다. 키는 입력 OptimizeToursRequest를 기준으로 한 프로토 경로(예: 'model.shipments.pickups.cost')이고 값은 전체 경로에 대해 집계된 해당 비용 필드에서 생성된 총 비용입니다. 즉, costs["model.shipments.pickups.cost"] 는 경로의 모든 수령 비용의 합계입니다. 모델에 정의된 모든 비용은 여기에 자세히 보고됩니다. 단, 2022년 1월 현재 집계된 방식으로만 보고되는 TransitionAttributes와 관련된 비용은 예외입니다. | 
| routeTotalCost | 
 경로의 총 비용입니다. 비용 지도의 모든 비용의 합계입니다. | 
방문
경로 중에 수행된 방문입니다. 이 방문은 Shipment의 수령 또는 배송에 해당합니다.
| JSON 표현 | 
|---|
| {
  "shipmentIndex": integer,
  "isPickup": boolean,
  "visitRequestIndex": integer,
  "startTime": string,
  "loadDemands": {
    string: {
      object ( | 
| 필드 | |
|---|---|
| shipmentIndex | 
 소스  | 
| isPickup | 
 이 값이 true이면 방문이  | 
| visitRequestIndex | 
 
 | 
| startTime | 
 방문이 시작된 시간입니다. 차량이 방문 위치에 이보다 일찍 도착할 수도 있습니다. 시간이  생성된 출력은 항상 Z-정규화되고 소수점 이하 0, 3, 6 또는 9자리인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면  | 
| loadDemands | 
 배송 및 방문 요청  | 
| detour | 
 방문 전에 경로에서 방문한 배송 상품과 시간대에서 발생할 수 있는 대기 시간으로 인한 추가 우회 시간입니다. 방문이 배송인 경우 우회 경로는 해당하는 수령 방문에서 계산되며 다음과 같습니다. 그렇지 않으면 차량  소수점 아래가 최대 9자리까지이고 ' | 
| shipmentLabel | 
 
 | 
| visitLabel | 
 
 | 
| injectedSolutionLocationToken | 
 방문 위치에 관한 정보를 나타내는 불투명 토큰입니다. 이 필드는 이 방문에 대해  실험용: 자세한 내용은 https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request를 참고하세요. | 
전환
경로의 두 이벤트 간의 전환입니다. ShipmentRoute의 설명을 참고하세요.
차량에 startLocation 또는 endLocation가 없으면 해당 이동 측정항목은 0입니다.
| JSON 표현 | 
|---|
| { "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( | 
| 필드 | |
|---|---|
| travelDuration | 
 이 전환 중의 이동 시간입니다. 소수점 아래가 최대 9자리까지이고 ' | 
| travelDistanceMeters | 
 전환 중에 이동한 거리입니다. | 
| trafficInfoUnavailable | 
 
 | 
| delayDuration | 
 이 전환에 적용된 지연 시간의 합계입니다. 지연이 있는 경우 다음 이벤트 (방문 또는 차량 종료)가 시작되기 정확히  소수점 아래가 최대 9자리까지이고 ' | 
| breakDuration | 
 이 전환 중에 발생한 휴식 시간의 합계입니다(휴식 시간이 있는 경우). 각 휴식 시간의 시작 시간 및 길이에 관한 세부정보는  소수점 아래가 최대 9자리까지이고 ' | 
| waitDuration | 
 이 전환 중에 대기한 시간입니다. 대기 시간은 유휴 시간에 해당하며 휴식 시간은 포함되지 않습니다. 또한 이 대기 시간은 연속되지 않은 여러 간격으로 나뉨을 수 있습니다. 소수점 아래가 최대 9자리까지이고 ' | 
| totalDuration | 
 편의상 제공되는 전환의 총 시간입니다. 다음과 같습니다. 
 소수점 아래가 최대 9자리까지이고 ' | 
| startTime | 
 이 전환의 시작 시간입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 0, 3, 6 또는 9자리인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면  | 
| routePolyline | 
 전환 중에 따라간 경로의 인코딩된 다중선 표현입니다. 이 필드는  | 
| routeToken | 
 출력 전용입니다. Navigation SDK에 전달하여 내비게이션 중에 경로를 재구성하고 경로를 변경하는 경우 경로가 생성될 때의 원래 의도를 준수할 수 있는 불투명 토큰입니다. 이 토큰을 불투명 BLOB로 취급합니다. 서비스가 정확히 동일한 경로를 반환하더라도 값이 변경될 수 있으므로 요청 간에 값을 비교하지 마세요. 이 필드는  | 
| vehicleLoads | 
 이 전환 중에 차량이 로드되는 경우입니다. 이 차량의  첫 번째 전환 중의 로드는 차량 경로의 시작 로드입니다. 그런 다음 방문이 수령인지 배송인지에 따라 방문  | 
EncodedPolyline
다중선의 인코딩된 표현입니다. 다중선 인코딩에 관한 자세한 내용은 https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding을 참고하세요.
| JSON 표현 | 
|---|
| { "points": string } | 
| 필드 | |
|---|---|
| points | 
 다중선의 인코딩된 점을 나타내는 문자열입니다. | 
휴식 시간
중단 실행을 나타내는 데이터입니다.
| JSON 표현 | 
|---|
| { "startTime": string, "duration": string } | 
| 필드 | |
|---|---|
| startTime | 
 광고 시점의 시작 시간입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 0, 3, 6 또는 9자리인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면  | 
| duration | 
 휴식 시간입니다. 소수점 아래가 최대 9자리까지이고 ' | 
VehicleFullness
VehicleFullness는 차량의 가용성을 계산하는 측정항목입니다. 각 VehicleFullness 필드는 0과 1 사이이며, 한도가 있는 측정항목 필드(예: AggregatedMetrics.travel_distance_meters)와 관련 차량 한도(예: Vehicle.route_distance_limit)(있는 경우)의 비율로 계산됩니다. 그렇지 않으면 충만도 비율이 설정되지 않습니다. 한도가 0이면 필드는 1로 설정됩니다. 참고: 경로에 트래픽 실행 불가능성이 있는 경우 일부 원시 가용성 비율이 1.0을 초과할 수 있습니다(예: 차량이 거리 제한을 초과할 수 있음). 이 경우 가득참 값을 1.0으로 제한합니다.
| JSON 표현 | 
|---|
| { "maxFullness": number, "distance": number, "travelDuration": number, "activeDuration": number, "maxLoad": number, "activeSpan": number } | 
| 필드 | |
|---|---|
| maxFullness | 
 이 메시지의 다른 모든 필드의 최대값입니다. | 
| distance | 
 
 | 
| travelDuration | 
 [AggregatedMetrics.travel_duration_seconds][] 와  | 
| activeDuration | 
 [AggregatedMetrics.total_duration_seconds][] 와  | 
| maxLoad | 
 모든 유형의 [AggregatedMetrics.max_load][] 와 각  | 
| activeSpan | 
 특정 차량의 (vehicleEndTime - vehicleStartTime) / (latestVehicleEndTime - earliestVehicleStartTime) 비율입니다. 분모가 없는 경우 대신 ( |