本頁說明如何使用 Roads Selection API 更新已建立的路徑:
更新路由
如要更新路線,請將 PATCH 要求傳送至 patch 端點:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
要求主體必須是 JSON 物件,內含要更新的 SelectedRoute 欄位。可更新的欄位包括 displayName、routeAttributes 和 dynamicRoute。更新路線幾何圖形 (dynamicRoute) 時,必須提供整個 dynamicRoute 物件 (起點、目的地和中途停靠點)。系統不支援更新部分子欄位。系統唯讀欄位 (例如 name、createTime 和 state) 無法修改。BigQuery 中的歷來資料會保留舊幾何和更新幾何的資料,兩者都位於同一個 selectedRouteId 下。如需個別的歷史資料,請建立新路線,而不是更新路線。
更新路線的幾何圖形 (dynamicRoute) 時,必須重新驗證。
路線處於 STATE_RUNNING 或 STATE_INVALID 狀態時,系統允許更新幾何圖形;路線處於 STATE_VALIDATING 或 STATE_DELETING 狀態時,系統會拒絕更新。詳情請參閱「驗證和路徑狀態」。除了 STATE_DELETING 以外,所有州別都允許更新中繼資料,例如 displayName 或 routeAttributes。
以下程式碼範例顯示傳送至 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" }
批次更新路線
如要在單一要求中更新多條路線,請使用 batchUpdate 端點。這個端點可讓您在一次呼叫中更新最多 1,000 條路線。批次更新具有不可分割的特性:如果要求中的任何路線驗證失敗或無法更新,批次中的所有路線都不會修改。
將 POST 要求傳送至 batchUpdate 端點:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
要求主體必須是包含 requests 陣列的 JSON 物件。這個陣列中的每個物件都是 UpdateSelectedRouteRequest,可指定路徑 name、選用的項目層級 updateMask,以及要更新的 selectedRoute 欄位。
updateMask 是選用參數,用於指定要更新的欄位清單 (displayName、routeAttributes 或整個 dynamicRoute 物件)。設定 updateMask=* 表示全面更換。updateMask 可在 requests 中的每個項目內指定,或移至批次要求主體的頂層,套用至批次中的所有更新路徑。如果省略 updateMask,系統會更新要求中填入的所有可更新欄位。如果批次層級和項目層級都設定了 updateMask,則兩者必須相符。指定衝突的遮罩會導致 INVALID_ARGUMENT 錯誤。
以下程式碼範例顯示傳送至 batchUpdate 端點的 POST 要求結構:
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" }, { "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" } ] }