Wyznaczanie trasy do punktów nawigacyjnych

Pakiet SDK do nawigacji na iOS oferuje ulepszone sposoby określania punktów pośrednich lub punktów nawigacyjnych, co zapewnia dokładniejsze wyznaczanie trasy i lepsze wrażenia podczas docierania do celu, zwłaszcza w przypadku miejsc docelowych z wieloma wejściami lub konkretnymi punktami nawigacyjnymi. Możesz wyznaczać trasy do dokładnych lokalizacji za pomocą navigationPointToken, czyli ciągu znaków, który koduje lokalizację i dodatkowy kontekst trasy. Możesz też połączyć współrzędne szerokości i długości geograficznej z identyfikatorem miejsca, aby dodać kontekst.

Tło

Przed wersją 10.10 można było zdefiniować Waypoint za pomocą współrzędnych lokalizacji lub identyfikatora miejsca. Chociaż czasami jest to skuteczne, wyznaczanie trasy wyłącznie na podstawie szerokości i długości geograficznej może czasami prowadzić do nieoptymalnych punktów odbioru lub wysiadania, zwłaszcza w przypadku dużych obiektów, parków lub budynków z wieloma wejściami. Wynik może zostać przyciągnięty do najbliższego segmentu drogi, który może nie być najwygodniejszym lub prawidłowym punktem dostępu.

Ulepszone opcje punktów pośrednich rozwiązują ten problem, umożliwiając podanie dodatkowego kontekstu.

Używanie tokena punktu nawigacyjnego

Aby uzyskać najdokładniejsze wskazówki dojazdu do konkretnych punktów dostępu, takich jak wejścia, doki załadunkowe lub wyznaczone miejsca odbioru, możesz użyć navigationPointToken.

Ten token można uzyskać, wywołując metodę Destinations interfejsu Geocoding API. Reprezentuje konkretny, możliwy do wyznaczenia punkt nawigacyjny powiązany z miejscem.

Aby określić token punktu nawigacyjnego:

  1. Uzyskaj navigationPointToken z odpowiedzi metody SearchDestinations interfejsu Geocoding API.

  2. Określ navigationPointToken podczas tworzenia GMSNavigationWaypoint.

Swift

// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
  navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3..",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

GMSNavigationWaypoint *waypointTwo =
    [[GMSNavigationWaypoint alloc] initWithNavigationPointToken:@"sampleNavigationPointToken"
                                                          title:@"Sydney Opera House"];

Używanie tokenów punktów nawigacyjnych i tokenów tras

Możesz pobrać token punktu nawigacyjnego za pomocą interfejsu Geocoding API, użyć go w żądaniu do interfejsu Routes API, aby uzyskać token trasy, a następnie przekazać tylko token trasy do pakietu SDK Navigation. Token trasy zachowuje precyzję tokena punktu nawigacyjnego. Jest to przydatne w scenariuszach takich jak wspólne przejazdy lub dostawy, w których używasz interfejsu Routes API do obliczania ceny przejazdu i potrzebujesz precyzji tokena punktu nawigacyjnego.

Dzięki tokenowi trasy pakiet SDK Navigation rozpoczyna nawigację po tej samej trasie, która została użyta do obliczenia ceny. Zmniejsza to ryzyko, że przejazd odbędzie się dłuższą lub krótszą trasą, co może spowodować „szok cenowy”.

Więcej informacji o tokenach punktów nawigacyjnych i tokenach tras w interfejsie Routes API znajdziesz w artykułach Określanie lokalizacji na trasie i Uzyskiwanie tokena trasy. Informacje o planowaniu trasy za pomocą tokena trasy znajdziesz w artykule Planowanie trasy.

Poniższy diagram pokazuje, jak aplikacja do wspólnych przejazdów lub dostaw używa tokenów punktów nawigacyjnych i tokenów tras. Począwszy od wersji 11.3, aplikacja dla kierowców przekazuje do Navigation SDK w kroku 7 tylko token trasy.

Diagram przypadku użycia przejazdów i dostaw
Diagram przedstawiający przypadek użycia związany z przejazdami lub dostawą

Łączenie identyfikatora miejsca i lokalizacji

Od wersji 10.10 podczas tworzenia punktu pośredniego możesz podać zarówno identyfikator miejsca, jak i współrzędne lokalizacji. Ta metoda jest przydatna, gdy chcesz określić dokładny punkt (lokalizację), a jednocześnie podać kontekst całego miejsca (identyfikator miejsca). Dzięki temu pakiet Navigation SDK może zapewnić lepsze wrażenia po dotarciu na miejsce, wyróżniając budynek docelowy lub pokazując pobliskie ciekawe miejsca powiązane z identyfikatorem miejsca.

Swift

// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
  location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),  
  placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];

Uwagi

Jeśli podasz zarówno placeID, jak i location:

  • Trasa jest kierowana głównie na określony location.
  • placeID zapewnia kontekst, który ułatwia dotarcie na miejsce.
  • Kreacja zastępcza: jeśli pakiet SDK stwierdzi, że podany placeID odpowiada funkcji, która jest zbyt daleko od podanego location, zignoruje placeID. W tym przypadku trasa prowadzi tylko do location, a ulepszenia dotyczące miejsca docelowego nie są dostępne.

Podsumowanie prawidłowych konfiguracji punktów na trasie

Specyfikacja location placeID navigationPointToken Działanie routingu Wyróżnianie miejsc docelowych
Tylko współrzędne lokalizacji zestaw brak brak Wyznacza trasę do segmentu drogi najbliższego określonym współrzędnym. Wyświetlane, jeśli miejsce docelowe można określić z dużą pewnością.
Tylko identyfikator miejsca brak zestaw brak wyznacza trasę do domyślnego punktu nawigacyjnego dla identyfikatora miejsca; Z identyfikatora miejsca
Tylko token punktu nawigacyjnego brak brak zestaw wyznacza trasę do dokładnego punktu nawigacyjnego reprezentowanego przez token; Z miejsca docelowego określonego w pierwotnym żądaniu metody miejsc docelowych interfejsu Geocoding API.
Współrzędne lokalizacji i identyfikator miejsca zestaw zestaw brak Wyznacza trasę do segmentu drogi najbliższego określonym współrzędnym. Z identyfikatora miejsca, ale nie jest wyświetlana, jeśli identyfikator miejsca jest zbyt daleko od współrzędnych szerokości i długości geograficznej.