หน้านี้อธิบายวิธีอัปเดตเส้นทางที่คุณสร้างไว้แล้วโดยใช้ Roads Selection API
- อัปเดตเส้นทาง: อัปเดตรายละเอียดของเส้นทางเดียวโดยใช้ปลายทาง
patch - อัปเดตเส้นทางเป็นกลุ่ม: อัปเดตรายละเอียดของเส้นทางหลายเส้นทางในคำขอเดียวโดยใช้ปลายทาง
batchUpdate
อัปเดตเส้นทาง
หากต้องการอัปเดตเส้นทาง ให้ส่งคำขอ PATCH ไปยังปลายทาง patch ดังนี้
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
เนื้อหาคำขอต้องเป็นออบเจ็กต์ JSON ที่มีช่องของ SelectedRoute ที่จะอัปเดต ช่องที่อัปเดตได้ ได้แก่ displayName, routeAttributes, dynamicRoute และ dynamicRouting (ไม่ว่าเส้นทางจะคงที่หรือแบบไดนามิก) เมื่ออัปเดตจุดอ้างอิงของเส้นทาง (dynamicRoute) คุณต้องระบุออบเจ็กต์ dynamicRoute ทั้งหมด (ต้นทาง ปลายทาง และจุดอ้างอิงระดับกลาง) ระบบไม่รองรับการอัปเดตฟิลด์ย่อยบางส่วน ช่องระบบแบบอ่านอย่างเดียว เช่น name, createTime และ state จะแก้ไขไม่ได้ ข้อมูลย้อนหลังใน BigQuery จะเก็บข้อมูลสำหรับจุดอ้างอิงก่อนหน้าและจุดอ้างอิงที่อัปเดตภายใต้ selectedRouteId เดียวกัน หากต้องการข้อมูลย้อนหลังแยกต่างหาก ให้สร้างเส้นทางใหม่แทนการอัปเดต
การอัปเดตจุดอ้างอิงของเส้นทาง (dynamicRoute) จะทริกเกอร์การตรวจสอบเส้นทางอีกครั้ง ระบบจะอัปเดตช่อง static_route_geometry และ road_segment_ids ในตาราง BigQuery routes_status ตามลำดับ
ระบบจะอนุญาตให้อัปเดตจุดอ้างอิงเมื่อเส้นทางอยู่ในสถานะ STATE_RUNNING หรือ STATE_INVALID และจะปฏิเสธหากเส้นทางอยู่ในสถานะ STATE_VALIDATING หรือ STATE_DELETING ดูข้อมูลเพิ่มเติมได้ที่สถานะการตรวจสอบและเส้นทาง
การอัปเดตข้อมูลเมตา เช่น displayName, routeAttributes หรือ dynamicRouting ได้รับอนุญาตในทุกรัฐ ยกเว้น STATE_DELETING
ตัวอย่างโค้ดต่อไปนี้แสดงโครงสร้างของคำขอ PATCH ไปยังปลายทาง patch
curl -X PATCH -d '{
"dynamicRoute": {
"origin": {
"latitude": 38.5817,
"longitude": -121.4944
},
"destination": {
"latitude": 38.5449,
"longitude": -121.7405
}
}
}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes/"\
"SELECTED_ROUTE_ID?updateMask=dynamicRoute"เมื่อดำเนินการสำเร็จ API จะแสดงผลทรัพยากร SelectedRoute ที่อัปเดตแล้ว ดังนี้
{ "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID", "dynamicRoute": { "origin": { "latitude": 38.5817, "longitude": -121.4944 }, "destination": { "latitude": 38.5449, "longitude": -121.7405 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING", "dynamicRouting": TRUE_OR_FALSE }
อัปเดตเส้นทางเป็นกลุ่ม
หากต้องการอัปเดตหลายเส้นทางในคำขอเดียว ให้ใช้ปลายทาง batchUpdate ปลายทางนี้ช่วยให้คุณอัปเดตเส้นทางได้สูงสุด 1,000 เส้นทางในการเรียกใช้ 1 ครั้ง การอัปเดตเป็นกลุ่มเป็นแบบอะตอมมิก กล่าวคือ หากเส้นทางใดในคำขอไม่ผ่านการตรวจสอบหรืออัปเดตไม่ได้ ระบบจะไม่แก้ไขเส้นทางใดๆ ในกลุ่ม
ส่งคำขอ POST ไปยังปลายทาง batchUpdate ดังนี้
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
เนื้อความของคำขอต้องเป็นออบเจ็กต์ JSON ที่มีอาร์เรย์ requests
ออบเจ็กต์แต่ละรายการภายในอาร์เรย์นี้คือ UpdateSelectedRouteRequest ที่ระบุเส้นทาง name, updateMask ระดับรายการที่ไม่บังคับ และช่อง selectedRoute ที่จะอัปเดต
updateMask เป็นพารามิเตอร์ที่ไม่บังคับซึ่งระบุรายการฟิลด์ที่จะอัปเดต (displayName, routeAttributes, dynamicRouting หรือออบเจ็กต์ dynamicRoute ทั้งหมด) การตั้งค่า updateMask=* บ่งบอกถึงการแทนที่ทั้งหมด คุณสามารถระบุ updateMask ภายในแต่ละรายการใน requests หรือย้ายไปยังระดับบนสุดของเนื้อหาคำขอแบบกลุ่มเพื่อใช้กับเส้นทางที่อัปเดตทั้งหมดในกลุ่ม
หากละเว้น updateMask ระบบจะถือว่าช่องที่อัปเดตได้ทั้งหมดซึ่งป้อนข้อมูลไว้ในคำขอได้รับการอัปเดตแล้ว หากตั้งค่า updateMask ไว้ทั้งในระดับกลุ่มและระดับสินค้า ข้อมูลเหล่านั้นต้องตรงกัน การระบุมาสก์ที่ขัดแย้งกันจะทำให้เกิดข้อผิดพลาด INVALID_ARGUMENT
ตัวอย่างโค้ดต่อไปนี้แสดงโครงสร้างของคำขอ POST ไปยังปลายทาง batchUpdate
curl -X POST -d '{
"requests": [
{
"selectedRoute": {
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1",
"displayName": "DISPLAY_NAME_1",
"dynamicRoute": {
"origin": {"latitude": 37.5, "longitude": -122.1},
"destination": {"latitude": 37.8, "longitude": -122.5}
}
},
"updateMask": "displayName,dynamicRoute"
},
{
"selectedRoute": {
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2",
"displayName": "DISPLAY_NAME_2",
"dynamicRoute": {
"origin": {"latitude": 37.5, "longitude": -122.1},
"destination": {"latitude": 37.8, "longitude": -122.5}
}
},
"updateMask": "displayName,dynamicRoute"
}
]}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes:batchUpdate"เมื่อดำเนินการสำเร็จ API จะแสดงผลการตอบกลับที่มีอาร์เรย์ของทรัพยากร SelectedRoute ที่อัปเดตแล้ว ดังนี้
{ "selectedRoutes": [ { "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1", "displayName": "DISPLAY_NAME_1", "dynamicRoute": { "origin": { "latitude": 37.5, "longitude": -122.1 }, "destination": { "latitude": 37.8, "longitude": -122.5 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING", "dynamicRouting": TRUE_OR_FALSE }, { "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2", "displayName": "DISPLAY_NAME_2", "dynamicRoute": { "origin": { "latitude": 37.5, "longitude": -122.1 }, "destination": { "latitude": 37.8, "longitude": -122.5 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING", "dynamicRouting": TRUE_OR_FALSE } ] }