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 poprosisz o alternatywne trasy, interfejs API zwróci maksymalnie 3 trasy wraz z trasą domyślną. Klienci mogą wtedy wybrać trasę, która najlepiej odpowiada ich wymaganiom.

Co wziąć pod uwagę podczas proszenia o trasy alternatywne

Jeśli chcesz poprosić o alternatywne trasy, pamiętaj o tych kwestiach:

  • Alternatywne trasy możesz poprosić tylko w przypadku tras bez pośrednich punktów orientacyjnych. Żądanie alternatywnych tras, gdy trasa określa pośrednie punkty na trasie, nie powoduje błędu. Nie są jednak zwracane żadne trasy alternatywne.

  • Odpowiedź zawiera maksymalnie 3 trasy alternatywne. 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 takich tras może wydłużyć czas odpowiedzi interfejsu API.

Przykładowe żądanie alternatywnych tras

Ustaw wartość computeAlternativeRoutes na true, aby wysyłać żądanie tras alternatywnych. Poniższy przykład pokazuje, jak wysłać żądanie alternatywnych tras w żądaniu 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. Klient może następnie wykorzystać te informacje, aby wybrać trasę. Więcej informacji znajdziesz w artykule Wybieranie informacji do zwrócenia.

Przykładowa odpowiedź dotycząca alternatywnych tras

W odpowiedzi użyj właściwości tablicy routeLabels, aby określić zasięg trasy:

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

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

W tym przykładzie odpowiedź zawiera domyślną trasę i 2 trasy alternatywne. Zwróć uwagę, że wartości właściwości duration i distanceMeters różnią się 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ędnianie w odpowiedzi linii łamanych

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

Aby dodać polilinię, w masce pola umieść znak routes.polyline:

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

Odpowiedź zawiera wtedy polilinię 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"
      ]
    }
   ]
}