Update selected routes

Auf dieser Seite wird beschrieben, wie Sie bereits erstellte Routen mit der Roads Selection API aktualisieren:

  • Route aktualisieren: Aktualisieren Sie die Details einer einzelnen Route mit dem Endpunkt patch.
  • Batch-Update von Routen: Aktualisieren Sie die Details mehrerer Routen in einer einzigen Anfrage über den Endpunkt batchUpdate.

Route aktualisieren

Senden Sie eine PATCH-Anfrage an den Endpunkt patch, um eine Route zu aktualisieren:

https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK

Der Anfragetext muss ein JSON-Objekt sein, das die Felder der zu aktualisierenden SelectedRoute enthält. Zu den aktualisierbaren Feldern gehören displayName, routeAttributes, dynamicRoute und dynamicRouting (ob die Route fest oder dynamisch ist). Wenn Sie Routenwegpunkte (dynamicRoute) aktualisieren, müssen Sie das gesamte dynamicRoute-Objekt (Start, Ziel und Zwischenwegpunkte) angeben. Teilaktualisierungen von Unterfeldern werden nicht unterstützt. Schreibgeschützte Systemfelder wie name, createTime und state können nicht geändert werden. In den Verlaufsdaten in BigQuery werden die Daten für die früheren und aktualisierten Wegpunkte unter derselben selectedRouteId beibehalten. Wenn Sie separate Verlaufsdaten benötigen, erstellen Sie eine neue Route, anstatt eine Aktualisierung durchzuführen.

Wenn Sie die Wegpunkte einer Route (dynamicRoute) aktualisieren, wird die Route noch einmal validiert. Die Felder static_route_geometry und road_segment_ids in der BigQuery-Tabelle routes_status werden entsprechend aktualisiert.

Wegpunktaktualisierungen sind zulässig, wenn die Route den Status STATE_RUNNING oder STATE_INVALID hat. Sie werden abgelehnt, wenn die Route den Status STATE_VALIDATING oder STATE_DELETING hat. Weitere Informationen finden Sie unter Validierungs- und Routenstatus. Das Aktualisieren von Metadaten wie displayName, routeAttributes oder dynamicRouting ist in allen Status außer STATE_DELETING zulässig.

Das folgende Codebeispiel zeigt die Struktur einer PATCH-Anfrage an den Endpunkt 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"

Bei Erfolg gibt die API die aktualisierte SelectedRoute-Ressource zurück:

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

Batch-Update von Routen

Wenn Sie mehrere Routen in einer einzelnen Anfrage aktualisieren möchten, verwenden Sie den Endpunkt batchUpdate. Mit diesem Endpunkt können Sie bis zu 1.000 Routen in einem Aufruf aktualisieren. Batch-Updates sind atomar: Wenn eine Route in der Anfrage die Validierung nicht besteht oder nicht aktualisiert werden kann, werden keine Routen im Batch geändert.

Senden Sie eine POST-Anfrage an den Endpunkt batchUpdate:

https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate

Der Anfragetext muss ein JSON-Objekt sein, das ein requests-Array enthält. Jedes Objekt in diesem Array ist ein UpdateSelectedRouteRequest, das die Route name, ein optionales updateMask auf Elementebene und die zu aktualisierenden selectedRoute-Felder angibt.

Ein updateMask ist ein optionaler Parameter, der die Liste der zu aktualisierenden Felder angibt (displayName, routeAttributes, dynamicRouting oder das gesamte dynamicRoute-Objekt). Die Einstellung updateMask=* gibt einen vollständigen Ersatz an. Eine updateMask kann in jedem einzelnen Element in requests angegeben oder auf die oberste Ebene des Batchanfragetexts verschoben werden, um sie auf alle aktualisierten Routen im Batch anzuwenden. Wenn updateMask weggelassen wird, werden alle aktualisierbaren Felder, die in der Anfrage ausgefüllt sind, implizit aktualisiert. Wenn ein updateMask sowohl auf Batch- als auch auf Elementebene festgelegt ist, müssen sie übereinstimmen. Die Angabe von in Konflikt stehenden Masken führt zu einem INVALID_ARGUMENT-Fehler.

Das folgende Codebeispiel zeigt die Struktur einer POST-Anfrage an den Endpunkt 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"

Bei Erfolg gibt die API eine Antwort mit einem Array der aktualisierten SelectedRoute-Ressourcen zurück:

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