Punkt für eine Route festlegen

Entwickler im Europäischen Wirtschaftsraum (EWR)

Standardmäßig werden Zwischenwegpunkte von der API als Zwischenstopps auf einer Route behandelt. Sie können einen Zwischenwegpunkt jedoch als Durchgangswegpunkt (via) konfigurieren, den das Fahrzeug ohne anzuhalten passiert.

Verwenden Sie Durchgangswegpunkte, um eine bestimmte Route zu formen oder anzupassen. Anstatt die Route in separate Abhol- oder Absetzpunkte aufzuteilen, wird die Routing-Engine durch einen Durchgangswegpunkt gezwungen, auf dem Weg zum Ziel einen bestimmten Ort zu passieren, z. B. um einem bevorzugten Straßensegment zu folgen oder eine bekannte Gefahr zu vermeiden.

Eine Route mit einem Startpunkt, einem oder mehreren Zwischenwegpunkten und einem Ziel enthält nur einen Routenabschnitt, der den Startpunkt direkt mit dem Ziel verbindet.

Wenn Sie einen Zwischenwegpunkt als Durchgangswegpunkt konfigurieren möchten, setzen Sie das Attribut via des Wegpunkts entweder in der REST-Ressource Waypoint oder in der gRPC-Nachricht Waypoint auf true.

Die Routes API akzeptiert Adressen, Orts-IDs sowie Breiten- und Längengrade. Breiten- und Längengrade (latLng) ermöglichen jedoch die präziseste Routenanpassung für Durchgangswegpunkte.

Die Property via ist am effektivsten, wenn Sie Routen erstellen, indem Sie Wegpunkte auf einer Karte ziehen. So können Sie die endgültige Route in Echtzeit sehen und Wegpunkte an zugänglichen Orten platzieren.

Beispiel: Wegpunkt für die Durchfahrt festlegen

Im folgenden Beispiel wird gezeigt, wie Sie "via": true für einen Zwischenwegpunkt in einer vollständigen computeRoutes-POST-Anfrage festlegen:

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Adressen oder Orts-IDs für Durchfahrtswegpunkte verwenden

Wir empfehlen zwar die Verwendung von Breiten- und Längengradkoordinaten für eine präzise Routenführung, Sie können aber auch Zwischenwegpunkte mithilfe eines Adressstrings oder einer Orts-ID angeben.

Wenn Sie eine Adresse oder Orts-ID für einen Zwischenwegpunkt verwenden, interpoliert die API den Standort und fängt ihn an der nächstgelegenen befahrbaren Straße. Dieser Prozess kann manchmal zu Abweichungen oder Ungenauigkeiten bei der Route im Vergleich zu den genauen Koordinaten führen.

Wenn Sie einen Wegpunkt mit einem Adressstring oder einem Plus Code angeben, wird der Standort von der API geocodiert und die entsprechende Orts-ID im Array geocodingResults.intermediates in der Antwort zurückgegeben.

Verwenden Sie für jedes Element im intermediates-Array die intermediateWaypointRequestIndex-Property, um zu bestimmen, welcher Zwischenwegpunkt in der Anfrage der Orts-ID in der Antwort entspricht.

Beispiel: Orts-IDs für Durchgangswegpunkte anfordern

Das folgende Beispiel zeigt eine Anfrage mit drei Zwischenstopps, für die jeweils "via": true angegeben ist:

curl -X POST -d '{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "24 Willie Mays Plaza, San Francisco, CA 94107"
  },
  "intermediates": [
    {
      "address": "450 Serra Mall, Stanford, CA 94305, USA",
      "via": true
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063",
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Die Antwort enthält das Array geocodingResults mit den Orts-IDs für den Startort, den Zielort und die beiden Zwischenwegpunkte, die Sie in der Anfrage unter Index 0 und Index 2 als Adresse angegeben haben. Der Zwischenwegpunkt bei Index 1 wird von der API aus geocodingResults weggelassen, da Sie ihn mit Breiten- und Längengradkoordinaten angegeben haben:

{
  "routes": [
    {
      "distanceMeters": 54200,
      "duration": "2400s",
      "legs": [
        {
          "distanceMeters": 54200,
          "duration": "2400s",
          "startLocation": {
            "latLng": {
              "latitude": 37.4220,
              "longitude": -122.0841
            }
          },
          "endLocation": {
            "latLng": {
              "latitude": 37.7786,
              "longitude": -122.3893
            }
          }
        }
      ]
    }
  ],
  "geocodingResults": {
    "origin": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g"
    },
    "destination": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY"
    },
    "intermediates": [
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 0,
        "type": [
          "street_address"
        ],
        "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y"
      },
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 2,
        "type": [
          "premise"
        ],
        "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0"
      }
    ]
  }
}