Na tej stronie opisaliśmy, jak zaktualizować trasy utworzone za pomocą interfejsu Roads Selection API:
- Aktualizowanie trasy: zaktualizuj szczegóły pojedynczej trasy za pomocą punktu końcowego
patch. - Aktualizowanie zbiorcze tras: zaktualizuj szczegóły wielu tras w jednym
żądaniu za pomocą punktu końcowego
batchUpdate.
Aktualizowanie trasy
Aby zaktualizować trasę, wyślij żądanie PATCH do punktu końcowego patch:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
Treść żądania musi być obiektem JSON zawierającym pola
SelectedRoute, które mają zostać zaktualizowane. Pola, które można zaktualizować, to displayName,
routeAttributes, i dynamicRoute. Podczas aktualizowania geometrii trasy (dynamicRoute) musisz podać cały obiekt dynamicRoute (miejsce początkowe, miejsce docelowe i pośrednie punkty trasy). Nie można zaktualizować części pola. Nie można modyfikować pól systemowych tylko do odczytu, takich jak name, createTime i state. Dane historyczne w BigQuery będą przechowywać dane dotyczące starej i zaktualizowanej geometrii pod tym samym identyfikatorem selectedRouteId. Jeśli potrzebujesz oddzielnych danych historycznych, utwórz nową trasę zamiast aktualizować istniejącą.
Aktualizacja geometrii trasy (dynamicRoute) wymaga ponownego sprawdzenia jej poprawności.
Aktualizacje geometrii są dozwolone, gdy trasa jest w stanie STATE_RUNNING lub STATE_INVALID, i są odrzucane, gdy trasa jest w stanie STATE_VALIDATING lub STATE_DELETING. Więcej informacji znajdziesz w artykule Stany weryfikacji i trasy.
Aktualizowanie metadanych, takich jak displayName lub routeAttributes, jest dozwolone we wszystkich stanach z wyjątkiem STATE_DELETING.
Poniższy przykład kodu pokazuje strukturę żądania PATCH do
patch punktu końcowego:
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"Jeśli operacja się uda, interfejs API zwróci zaktualizowany SelectedRoute zasób:
{ "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" }
Aktualizowanie zbiorcze tras
Aby zaktualizować wiele tras w jednym żądaniu, użyj batchUpdate
punktu końcowego. Ten punkt końcowy umożliwia zaktualizowanie do 1000 tras w jednym wywołaniu. Aktualizacje zbiorcze są niepodzielne: jeśli weryfikacja którejkolwiek trasy w żądaniu się nie powiedzie lub nie można jej zaktualizować, żadna trasa w pakiecie nie zostanie zmodyfikowana.
Wyślij żądanie POST do punktu końcowego batchUpdate:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
Treść żądania musi być obiektem JSON zawierającym tablicę requests.
Każdy obiekt w tej tablicy to UpdateSelectedRouteRequest, który określa name trasy, opcjonalną updateMask na poziomie elementu oraz pola selectedRoute do zaktualizowania.
updateMask to parametr opcjonalny, który określa listę pól do
zaktualizowania (displayName, routeAttributes, lub cały obiekt dynamicRoute
). Ustawienie updateMask=* oznacza pełną zamianę. updateMask można określić w każdym elemencie tablicy requests lub przenieść na najwyższy poziom treści żądania zbiorczego, aby zastosować go do wszystkich zaktualizowanych tras w pakiecie.
Jeśli parametr updateMask zostanie pominięty, wszystkie pola, które można zaktualizować i które są wypełnione w żądaniu, zostaną zaktualizowane. Jeśli parametr updateMask jest ustawiony zarówno na poziomie pakietu, jak i na poziomie elementu, muszą one być zgodne. Określenie sprzecznych masek spowoduje błąd INVALID_ARGUMENT.
Poniższy przykład kodu pokazuje strukturę żądania POST do punktu końcowego
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"Jeśli operacja się uda, interfejs API zwróci odpowiedź zawierającą tablicę zaktualizowanych zasobów
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" } ] }