Update selected routes

Na tej stronie opisaliśmy, jak zaktualizować trasy utworzone za pomocą interfejsu Roads Selection API:

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"
    }
  ]
}