เส้นทางของยานพาหนะสามารถแยกวิเคราะห์ตามแกนเวลาได้ดังนี้ (สมมติว่ามีการเข้าชม 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 ครั้ง ก็จะมีการเปลี่ยน 1+n ครั้ง
- การเข้าชมจะอยู่ระหว่างการเปลี่ยนก่อน (ดัชนีเดียวกัน) และการเปลี่ยนหลังจากนั้น (ดัชนี + 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 ต้องเป็นค่าที่ไม่ซ้ำกันและต้องเป็นระยะเวลาติดต่อกันก่อนการเข้าชมครั้งถัดไป (หรือจุดสิ้นสุดของยานพาหนะ) ดังนั้น คุณก็ทราบเวลาเริ่มต้นและเวลาสิ้นสุดได้เพียงแค่ดูระยะเวลาการเลื่อน
- ช่วงพักคือช่วงเวลาที่ต่อเนื่องกันและไม่ทับซ้อนกัน การตอบกลับจะระบุเวลาเริ่มต้นและระยะเวลาของช่วงพักแต่ละช่วง
- 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 | 
 เวลารถเริ่มออกเดินทาง ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| vehicleEndTime | 
 เวลาที่พาหนะวิ่งเส้นทางเสร็จ ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| visits[] | 
 ลําดับการเข้าชมตามลําดับที่แสดงถึงเส้นทาง โดย visits[i] คือการเข้าชมที่ i ในเส้นทาง หากช่องนี้ว่างเปล่า ระบบจะถือว่ายานพาหนะไม่ได้ใช้งาน | 
| transitions[] | 
 รายการทรานซิชันตามลําดับของเส้นทาง | 
| hasTrafficInfeasibilities | 
 เมื่อตั้งค่า  เวลาที่มาถึงที่ next_visit มีแนวโน้มที่จะเกิดช้ากว่ากรอบเวลาปัจจุบันเนื่องจากเวลาเดินทางโดยประมาณ  | 
| routePolyline | 
 การนำเสนอเส้นประกอบที่เข้ารหัสของเส้นทาง ระบบจะป้อนข้อมูลในช่องนี้ก็ต่อเมื่อตั้งค่า  | 
| breaks[] | 
 ช่วงพักที่กำหนดไว้สำหรับยานพาหนะที่วิ่งเส้นทางนี้ ลำดับ  | 
| metrics | 
 เมตริกระยะเวลา ระยะทาง และน้ำหนักบรรทุกของเส้นทางนี้ ระบบจะรวมช่อง  | 
| vehicleFullness | 
 
 ทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจมีการเปลี่ยนแปลงในอนาคต | 
| routeCosts | 
 ค่าใช้จ่ายของเส้นทางที่แจกแจงตามช่องคำขอที่เกี่ยวข้องกับค่าใช้จ่าย คีย์คือเส้นทางโปรโตคอลซึ่งสัมพันธ์กับอินพุต OptimizeToursRequest เช่น "model.shipments.pickups.cost" และค่าคือต้นทุนทั้งหมดที่สร้างขึ้นจากช่องค่าใช้จ่ายที่เกี่ยวข้อง ซึ่งรวบรวมจากทั่วทั้งเส้นทาง กล่าวคือ costs["model.shipments.pickups.cost"] คือผลรวมของค่าใช้จ่ายในการรับสินค้าทั้งหมดในเส้นทาง ระบบจะรายงานต้นทุนทั้งหมดที่กําหนดไว้ในรูปแบบโดยละเอียดที่นี่ ยกเว้นต้นทุนที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานแบบรวมเท่านั้น ณ วันที่ 01/2022 | 
| routeTotalCost | 
 ต้นทุนรวมของเส้นทาง ผลรวมของค่าใช้จ่ายทั้งหมดในแผนที่ต้นทุน | 
ไปที่
การเข้าชมที่เกิดขึ้นระหว่างเส้นทาง การเข้าชมนี้สอดคล้องกับการรับหรือการนำส่ง Shipment
| การแสดง JSON | 
|---|
| {
  "shipmentIndex": integer,
  "isPickup": boolean,
  "visitRequestIndex": integer,
  "startTime": string,
  "loadDemands": {
    string: {
      object ( | 
| ช่อง | |
|---|---|
| shipmentIndex | 
 ดัชนีของช่อง  | 
| isPickup | 
 หากเป็นจริง การเข้าชมจะสอดคล้องกับการรับ  | 
| visitRequestIndex | 
 ดัชนีของ  | 
| startTime | 
 เวลาที่การเข้าชมเริ่มต้น โปรดทราบว่ายานพาหนะอาจมาถึงสถานที่เข้าชมเร็วกว่านี้ เวลาสอดคล้องกับ  ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น  | 
| loadDemands | 
 ดีมานด์การโหลดการเข้าชมทั้งหมดเป็นผลรวมของการจัดส่งและคำขอเข้าชม  | 
| detour | 
 เวลาอ้อมทางเพิ่มเติมเนื่องจากมีการเข้าชมการจัดส่งในเส้นทางก่อนการเข้าชม และเวลารอที่อาจเกิดขึ้นเนื่องจากกรอบเวลา หากการเข้าชมเป็นการนําส่ง ระบบจะคํานวณการอ้อมเส้นทางจากการเข้าชมเพื่อรับสินค้าที่เกี่ยวข้องและเท่ากับ มิเช่นนั้น ระบบจะคํานวณจากยานพาหนะ  ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมได้สูงสุด 9 หลัก โดยลงท้ายด้วย  | 
| shipmentLabel | 
 สําเนาของ  | 
| visitLabel | 
 สําเนาของ  | 
| injectedSolutionLocationToken | 
 โทเค็นทึบแสงที่แสดงข้อมูลเกี่ยวกับสถานที่เข้าชม ระบบอาจป้อนข้อมูลในช่องนี้ในการเข้าชมของเส้นทางผลลัพธ์เมื่อตั้งค่า  เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request | 
ทรานซิชัน
การเปลี่ยนระหว่างเหตุการณ์ 2 รายการในเส้นทาง ดูคำอธิบายของ 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 | 
 เวลาเริ่มต้นของการเปลี่ยนนี้ ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "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 | 
 เวลาเริ่มต้นของช่วงพัก ใช้ RFC 3339 ซึ่งเอาต์พุตที่สร้างขึ้นจะเป็นรูปแบบ Z-normalized เสมอ และใช้ตัวเลขทศนิยม 0, 3, 6 หรือ 9 ระบบยังยอมรับออฟเซตอื่นๆ นอกเหนือจาก "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) สำหรับยานพาหนะหนึ่งๆ หากไม่มีตัวหาร ระบบจะใช้ ( |