Wyznaczanie trasy do punktów nawigacyjnych

Pakiet Navigation SDK 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 z dojazdu, 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 uzyskać dodatkowy kontekst.

Tło

Przed wersją 10.10 można było zdefiniować Waypoint za pomocą współrzędnych lokalizacjilub identyfikatora miejsca. Chociaż czasami było to skuteczne, kierowanie wyłącznie do 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 być przyciągany do najbliższego odcinka drogi, który może nie być najwygodniejszym lub najwłaściwszym punktem dostępu.

Rozszerzone opcje punktów pośrednich rozwiązują ten problem, ponieważ umożliwiają podanie większej ilości kontekstu.

Używanie tokena punktu nawigacyjnego

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

Ten token można uzyskać, wywołując metodę Destinations interfejsu Geocoding API. Jest to konkretny punkt nawigacyjny związany z miejscem, do którego można wyznaczyć trasę.

Aby określić token punktu nawigacyjnego:

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

  2. Podczas tworzenia GMSNavigationWaypoint określ navigationPointToken.

Uwaga: nie możesz jednocześnie określić tokena punktu nawigacyjnego wraz z lokalizacją i identyfikatorem miejsca.

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] initWithNavigationPointToek:@"sampleNavigationPointToken"

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

Token punktu nawigacyjnego możesz pobrać za pomocą interfejsu Geocoding API, a token trasy – za pomocą interfejsu Routes API. Następnie przekaż oba tokeny do pakietu Navigation SDK. Jest to przydatne w przypadku usług takich jak przejazdy na zamówienie czy dostawy, w których używasz interfejsu Routes API do obliczania ceny przejazdu i zależy Ci na precyzji tokena punktu nawigacyjnego.

Token trasy wpływa na wybór trasy przez Navigation SDK, tak aby była ona zgodna z trasą, która została użyta do określenia ceny. Zmniejsza to ryzyko korzystania z dłuższych lub krótszych tras, co może powodować „szok cenowy”.

Więcej informacji o określaniu lokalizacji za pomocą tokena punktu nawigacyjnegotworzeniu tokena trasy znajdziesz w dokumentacji interfejsu Routes API. Więcej informacji o planowaniu trasy za pomocą tokena trasy znajdziesz w artykule „Planowanie trasy”.

Ten diagram pokazuje, jak aplikacja do przewozu osób lub dostaw wykorzystuje tokeny punktów nawigacyjnych i tokeny trasy:

Diagram przedstawiający przypadek użycia w przypadku przejazdów lub dostaw
Diagram przedstawiający przypadek użycia związany z przewozem osób 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 do celu, wyróżniając budynek docelowy lub pokazując pobliskie punkty orientacyjne 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 przeznaczona głównie dla określonego location.
  • placeId służy jako kontekst, który zwiększa komfort przyjazdu.
  • Wycofanie: jeśli pakiet SDK stwierdzi, że podany placeId odpowiada funkcji, która jest zbyt oddalona od podanego location, placeId zostanie zignorowany. W takim przypadku routing będzie odbywać się tylko do location, a ulepszenia dotyczące miejsca docelowego nie będą dostępne.

Podsumowanie prawidłowych konfiguracji punktów pośrednich

Specyfikacja location placeID navigationPointToken Działanie routingu Wyróżnianie miejsca docelowego
Tylko współrzędne lokalizacji zestaw brak brak Kieruje ruch do segmentu drogi najbliższego określonych współrzędnych Wyświetlane, jeśli miejsce docelowe można określić z dużą pewnością.
Tylko identyfikator miejsca brak zestaw brak Trasy do domyślnego punktu nawigacyjnego dla identyfikatora miejsca Identyfikator miejsca
Tylko token punktu nawigacyjnego brak brak zestaw trasy do dokładnego punktu nawigacyjnego reprezentowanego przez token; Z miejsca docelowego zdefiniowanego w pierwotnym żądaniu metody destinations interfejsu Geocoding API
Połączenie współrzędnych lokalizacji i identyfikatora miejsca se zestaw brak Kieruje ruch do segmentu drogi najbliższego określonych współrzędnych na podstawie identyfikatora miejsca, ale nie jest wyświetlana, jeśli identyfikator miejsca jest zbyt oddalony od współrzędnych geograficznych.