Wyświetlanie tras alternatywnych

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Domyślnie interfejs Routes API zwraca domyślną trasę, która jest zwykle najszybszą trasą z miejsca wyjazdu do miejsca docelowego. Gdy żądasz alternatywnej trasy, interfejs API zwraca do 3 tras, w tym domyślną. Klienci mogą wtedy wybrać trasę, która najlepiej odpowiada ich wymaganiom.

Co wziąć pod uwagę, prosząc o trasy alternatywne

Aby poprosić o alternatywną trasę, weź pod uwagę te kwestie:

  • Prośby o alternatywne trasy możesz wysyłać tylko w przypadku tras bez pośrednich punktów pośrednich. Zapytanie o alternatywne trasy, gdy trasa zawiera pośrednie punkty kontrolne, nie powoduje błędu. Nie są jednak zwracane żadne alternatywne trasy.

  • Odpowiedź zawiera maksymalnie 3 alternatywne trasy. Czasami jednak nie ma dostępnych alternatywnych tras, więc odpowiedź zawiera tylko trasę domyślną.

  • Ze względu na dodatkowe przetwarzanie wymagane do obliczenia alternatywnych tras żądanie alternatywnych tras może wydłużyć czas odpowiedzi interfejsu API.

Przykładowe żądanie dotyczące alternatywnych tras

Aby poprosić o trasy alternatywne, ustaw computeAlternativeRoutes na true. Na przykładzie poniżej pokazano, jak zażądać alternatywnych tras w ramach metody computeRoutes (REST).

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude":42.340173523716736,
        "longitude":-71.05997968330408
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":42.075698891472804,
        "longitude": -72.59806562080408
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference":"TRAFFIC_AWARE",
  "computeAlternativeRoutes": true
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

W tym przykładzie określasz maskę pola, aby odpowiedź zawierała tylko właściwości duration, distanceMeters,routeLabels dla każdej trasy. Na tej podstawie klient może wybrać trasę. Więcej informacji znajdziesz w artykule Wybieranie informacji do zwrócenia.

Przykład odpowiedzi dotyczącej alternatywnych tras

W odpowiedzi użyj właściwości tablicy routeLabels, aby zidentyfikować trasę dotarcia:

  • W przypadku trasy domyślnej właściwość routeLabels zawiera DEFAULT_ROUTE.

  • W przypadku dowolnych tras alternatywnych właściwość routeLabels zawiera wartość DEFAULT_ROUTE_ALTERNATE.

W tym przykładzie odpowiedź zawiera trasę domyślną i 2 trasy alternatywne. Zwróć uwagę, że wartości właściwości duration i distanceMeters są różne w przypadku każdej trasy:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}

Uwzględniaj w odpowiedzi linie łamane

Aby ułatwić użytkownikowi wybór trasy, dodaj do odpowiedzi poliline dla każdej trasy. Następnie możesz wyświetlić każdą linię łamaną na mapie.

Aby dodać ścieżkę złożoną, dodaj routes.polyline do maski pola:

-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'

Odpowiedź zawiera następnie łamany wielokąt dla każdej trasy:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "polyline": {
        "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "polyline": {
        "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "polyline": {
        "encodedPolyline": "FVLL|Af@HPAV…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}