Update selected routes

Na tej stronie dowiesz się, jak aktualizować utworzone już trasy za pomocą interfejsu Roads Selection API:

Zaktualizowanie 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 zasobu SelectedRoute, który ma zostać zaktualizowany. Pola, które można aktualizować, to displayName, routeAttributes, dynamicRoute i dynamicRouting (niezależnie od tego, czy trasa jest stała czy dynamiczna). Podczas aktualizowania punktów pośrednich trasy (dynamicRoute) musisz podać cały obiekt dynamicRoute (miejsce początkowe, miejsce docelowe i punkty pośrednie). Częściowe aktualizacje pól podrzędnych nie są obsługiwane. Nie można modyfikować pól systemowych tylko do odczytu, takich jak name, createTime i state. Dane historyczne w BigQuery zachowują dane dotyczące wcześniejszych i zaktualizowanych punktów orientacyjnych w ramach tego samego selectedRouteId. Jeśli potrzebujesz osobnych danych historycznych, utwórz nową trasę, zamiast aktualizować istniejącą.

Aktualizacja punktów pośrednich trasy (dynamicRoute) powoduje ponowne sprawdzenie trasy. Pola static_route_geometry i road_segment_ids w tabeli BigQuery routes_status zostaną odpowiednio zaktualizowane.

Aktualizacje punktów pośrednich 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, routeAttributes lub dynamicRouting jest dozwolone we wszystkich stanach z wyjątkiem STATE_DELETING.

Poniższy przykładowy kod pokazuje strukturę żądania PATCH do punktu końcowego 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"

W przypadku powodzenia interfejs API zwraca zaktualizowany zasób 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
}

Aktualizacja zbiorcza tras

Aby zaktualizować wiele tras w jednym żądaniu, użyj punktu końcowego batchUpdate. Ten punkt końcowy umożliwia zaktualizowanie maksymalnie 1000 tras w jednym wywołaniu. Aktualizacje zbiorcze są niepodzielne: jeśli jakakolwiek trasa w żądaniu nie przejdzie weryfikacji lub nie będzie można jej zaktualizować, żadne trasy w zbiorze nie zostaną zmodyfikowane.

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 trasę name, opcjonalne pole updateMask na poziomie elementu i pola selectedRoute do zaktualizowania.

updateMask to opcjonalny parametr, który określa listę pól do zaktualizowania (displayName, routeAttributes, dynamicRouting lub cały obiekt dynamicRoute). Ustawienie updateMask=* oznacza pełne zastąpienie. Właściwość updateMask można określić w każdym elemencie w requests lub przenieść na najwyższy poziom treści żądania zbiorczego, aby zastosować ją do wszystkich zaktualizowanych tras w żądaniu zbiorczym. Jeśli pominiesz parametr updateMask, wszystkie pola, które można aktualizować, zostaną zaktualizowane. Jeśli parametr updateMask jest ustawiony zarówno na poziomie grupy, jak i na poziomie produktu, muszą być one zgodne. Podanie masek powodujących konflikt skutkuje błędem INVALID_ARGUMENT.

Poniższy przykładowy kod 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ę powiedzie, 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",
      "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
    }
  ]
}