Zaplanuj trasę

Czasami warto zaplanować trasę, którą Twoja aplikacja przekazuje kierowcom. Korzystając z tokena trasy z interfejsu Routes API (lub Routes Preferred API), możesz określić 2 elementy planowanej trasy:

  • Linia łamana trasy

  • Twoje cele trasy

Oto kilka przykładów celów routingu:

  • Skróć czas dostawy: firma dostarczająca jedzenie może chcieć skrócić czas potrzebny na dostarczenie jedzenia.

  • Ogranicz czas podróży lub zużycie paliwa: firmy logistyczne mogą chcieć zwiększyć wydajność kierowców i obniżyć koszty paliwa.

  • Ogranicz czas do miejsca docelowego: operacja wysyłania usługi może skrócić czas potrzebny operatorom na przesłanie żądania zadania.

  • Obniżenie kosztów i zwiększenie bezpieczeństwa: firma oferująca wspólne przejazdy może ze względów bezpieczeństwa znaleźć trasę, która jest tańsza dla pasażerów, a także omija określone obszary.

Więcej informacji o planowaniu trasy przy użyciu tokena trasy znajdziesz w artykule Żądanie tokena trasy.

Dlaczego do celów trasy należy używać tokena trasy

Token trasy z interfejsu Routes lub Routes Preferred API daje większą kontrolę nad udostępnianą trasą:

  • Zaplanuj trasę z wyprzedzeniem, aby w miarę możliwości używać pakietu Navigation SDK.

  • Wybierz najlepszą trasę przez pakiet SDK nawigacji. Jeśli poprosisz o tokeny trasy podczas generowania tras w interfejsie Routes API, otrzymasz token trasy dla każdej wygenerowanej trasy. Następnie możesz wybrać token trasy, której chcesz użyć podczas przekazywania go do pakietu SDK nawigacji.

  • Oszacuj cenę z wyprzedzeniem, w tym przewidywany czas dotarcia na miejsce i odległość. Rzeczywisty koszt i czas mogą się różnić, ale to oszacowanie zmniejsza różnicę między oczekiwanym a rzeczywistym kosztem trasy.

  • Określanie bardziej zaawansowanych celów trasy, takich jak wyznaczanie tras ekologicznych lub najkrótsza trasa.

Jak działają tokeny tras interfejsu Routes API

Do planowania trasy z wykorzystaniem celów tras możesz użyć interfejsów Routes API lub Routes Preferred API. Interfejs Routes API zwraca token trasy, który możesz przekazać do pakietu SDK nawigacji, aby określić, w jaki sposób będzie on kierować pojazdem.

Oto, co się stanie, gdy poprosisz o token trasy z interfejsu Routes API i użyjesz go:

  1. Interfejs Routes API zwraca zaszyfrowany token trasy, który zawiera cele trasy i cele trasy.

  2. Przekazujesz token trasy do pakietu SDK nawigacji.

  3. Pakiet SDK nawigacji pobiera trasę, a jeśli jest ona niedostępna z powodu zmieniających się warunków, pobiera najlepiej pasującą trasę.

  4. Podczas pokonywania trasy, jeśli natężenie ruchu lub inne warunki na drodze ulegną zmianie lub pojazd odjedzie od zaplanowanej trasy, zmodyfikowane trasy będą stale dążyć do znalezienia najlepszej trasy na podstawie celów trasy określonych w tokenie.

Ten proces maksymalizuje odległość rzeczywistą do zaplanowanej trasy.

Dlaczego przewidywana trasa może nie zostać dokładnie przemierzona

Planowane trasy i trasy warto traktować jak wskazówki, których należy się przestrzegać – nie są one zależne od normy. Możesz zauważyć różnicę między zaplanowaną trasą a trasą udostępnianą przez nawigację z przewodnikiem. Wynika to z różnic w warunkach drogi, lokalizacji początkowej lub innych parametrach, które uległy zmianie od czasu utworzenia zaplanowanej trasy. Ta różnica może powodować niezgodność między planowanymi a rzeczywistymi celami dotyczącymi odległości i czasu dotarcia, a także innych istotnych aspektów podróży.

Planowanie trasy przy użyciu tokena trasy

Aby zaplanować trasę, utwórz token trasy, a następnie przekaż go do pakietu SDK nawigacji, jak opisano w tych krokach:

Krok 1. Utwórz token trasy za pomocą interfejsu Routes lub Routes Preferred API

  1. Poproś o token trasy, korzystając z jednej z tych metod:

    • Routes API: computeRoutes. Więcej informacji o żądaniu tokena trasy w interfejsie Routes API znajdziesz w sekcjach Obliczanie trasy i Żądanie tokena trasy.

    • Routes Preferred API: computeCustomRoutes. Więcej informacji o żądaniu tokena trasy w interfejsie Routes Preferred API znajdziesz w artykule o planowaniu trasy.

  2. Skonfiguruj żądanie trasy, aby spełniało wymagania korzystania z tokena trasy:

    • Ustaw wartość „travel_mode” na „DRIVING
    • Ustaw routing_preference na TRAFFIC_AWARE lub TRAFFIC_AWARE_OPTIMAL
    • NIE używaj punktów pośrednich

Krok 2. Przekaż token trasy do pakietu SDK nawigacji

  1. Zapisać token trasy: w pakiecie Navigation SDK skonfiguruj ciąg znaków do przechowywania tokena trasy. Na przykład:

    let routeToken = "route token returned by Routes API"

    Przykład zwróconego tokena trasy:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Przekaż token trasy do pakietu SDK nawigacji za pomocą metody mapView.navigator setDestinations, wskazując te same docelowe punkty pośrednie, które zostały użyte podczas tworzenia tokena trasy:

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Metoda Navigator.setDestinations zwraca stan żądania. Jeśli zostanie znaleziona trasa z lokalizacji użytkownika do podanego miejsca docelowego, zwróci wartość RouteStatus.OK.

Więcej informacji o tej metodzie znajdziesz w artykule Navigator.setDestinations.

Przykład

Poniższe przykłady kodu pokazują, jak pobrać zaplanowaną trasę.

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!

let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
                                                                            title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";

[mapView.navigator setDestinations:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

Współdziałanie tokenów tras z pakietem SDK nawigacji

Oto jak wygląda interakcja między trasą generowaną przez pakiet SDK nawigacji a zaplanowaną trasą w tokenie trasy:

  • Zastępuje wszystkie wcześniej ustawione miejsca docelowe.

  • Używa lokalizacji początkowej pojazdu.

  • Dostosowuje się do warunków na drodze i ruchu. Zobacz, dlaczego wyznaczona trasa może nie być dokładnie przemierzona.

  • Ignoruje te opcje związane z routingiem jako niepotrzebne:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Obserwatorzy:

    • Opcje związane z punktami pośrednimi, np. ustawienie boku drogi.

    • Cele trasy. Jeśli pakiet SDK nawigacji musi dostosować zwróconą trasę, używa celów trasy określonych przez Ciebie w żądaniu tokena trasy. Z tego powodu musisz użyć tych samych opcji związanych z punktami pośrednimi, które zostały określone w interfejsie Routes API.