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 odcinka 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 dodatkowych informacji.
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:
Uzyskaj
navigationPointTokenz odpowiedzi metody Destinations interfejsu Geocoding API.Określ
navigationPointTokenpodczas tworzeniaGMSNavigationWaypoint.
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, token trasy za pomocą interfejsu Routes API, a następnie przekazać oba tokeny do pakietu Navigation SDK. Jest to przydatne w sytuacjach takich jak przejazdy współdzielone lub dostawy, gdy używasz interfejsu Routes API do obliczania ceny przejazdu i chcesz uzyskać precyzję tokena punktu nawigacyjnego.
Dzięki tokenowi trasy pakiet Navigation SDK rozpoczyna nawigację po tej samej trasie, która została użyta do obliczenia ceny. Zmniejsza to ryzyko, że trasa przejazdu będzie dłuższa lub krótsza, co może spowodować „szok cenowy”.
Więcej informacji o określaniu lokalizacji za pomocą tokena punktu nawigacyjnego i tworzeniu tokena trasy znajdziesz w dokumentacji interfejsu Routes API. Aby dowiedzieć się, jak zaplanować trasę za pomocą tokena trasy, przeczytaj artykuł Planowanie trasy.
Ten diagram pokazuje, jak aplikacja do wspólnych przejazdów lub dostawy może używać tokenów punktów nawigacyjnych i tokenów tras:
Połączenie identyfikatora miejsca i lokalizacji
Od wersji 10.10 podczas tworzenia punktu na trasie 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. placeIdjest używany jako kontekst, aby ułatwić dotarcie na miejsce.- Zastępcza: jeśli pakiet SDK stwierdzi, że podany
placeIdodpowiada funkcji, która jest zbyt daleko od podanegolocation,placeIdzostanie zignorowany. W takim przypadku trasa będzie prowadzić tylko dolocation, 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 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 destinations interfejsu Geocoding API. |
| Współrzędne lokalizacji i identyfikator miejsca | se | 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. |