Pakiet Navigation SDK na Androida oferuje ulepszone sposoby określania punktów pośrednich lub punktów nawigacyjnych, co zapewnia dokładniejsze wyznaczanie trasy i lepsze wrażenia podczas dojazdu, zwłaszcza w przypadku miejsc docelowych z wieloma wejściami lub określonymi punktami nawigacyjnymi. Możesz wyznaczać trasę do dokładnych lokalizacji za pomocą parametru navigationPointToken, który jest ciągiem znaków kodującym lokalizację i dodatkowy kontekst trasy. Możesz też połączyć współrzędne geograficzne z identyfikatorem miejsca, aby uzyskać dodatkowy kontekst.
Tło
Przed wersją 7.4 można było zdefiniować Waypoint za pomocą współrzędnych geograficznych lub identyfikatora miejsca. Chociaż czasami jest to skuteczne, wyznaczanie trasy wyłącznie na podstawie współrzędnych geograficznych może czasami prowadzić do nieoptymalnych punktów wysiadania lub odbioru, 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 ani najdokładniejszym punktem nawigacyjnym.
Ulepszone opcje punktów pośrednich rozwiązują ten problem, umożliwiając podanie większej ilości kontekstu.
Używanie tokena punktu nawigacyjnego
Aby uzyskać jak najdokładniejsze wyznaczanie trasy do określonych punktów nawigacyjnych, takich jak wejścia, rampy załadunkowe lub wyznaczone miejsca odbioru, możesz użyć parametru navigationPointToken. Ten token jest uzyskiwany przez wywołanie metody destinations
interfejsu Geocoding
API. Reprezentuje on konkretny punkt nawigacyjny, do którego można wyznaczyć trasę, powiązany z miejscem.
Aby określić token punktu nawigacyjnego:
- Uzyskaj
navigationPointTokenz metody Destinations odpowiedzi Geocoding API. - Utwórz
Waypointza pomocą metodysetNavigationPointToken()w konstruktorze.
Uwaga: gdy używasz metody setNavigationPointToken(), nie możesz jednocześnie używać metod setLatLng() ani setPlaceIdString(). Te metody wykluczają się wzajemnie z metodą setNavigationPointToken().
// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithToken = Waypoint.builder()
.setTitle(destinationName)
.setNavigationPointToken(navPointToken)
.build();
// Use this waypoint in navigator.setDestinations()
Używanie tokenów punktów nawigacyjnych i tokenów tras
Możesz pobrać token punktu nawigacyjnego za pomocą Geocoding API, pobrać token trasy z Routes API, a następnie przekazać zarówno token punktu nawigacyjnego, jak i token trasy do Navigation SDK. Jest to przydatne w sytuacjach takich jak przejazdy współdzielone lub dostawy, gdy używasz Routes API do obliczania ceny przejazdu i chcesz mieć dokładność tokena punktu nawigacyjnego.
Token trasy powoduje, że trasa wybrana przez Navigation SDK jest zbliżona do trasy użytej do ustalenia ceny. Zmniejsza to ryzyko, że do przejazdu zostaną użyte dłuższe lub krótsze trasy, 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 Routes API. Więcej informacji o planowaniu trasy za pomocą tokena trasy znajdziesz w artykule „Planowanie trasy”.
Ten diagram pokazuje, jak aplikacja do przejazdów współdzielonych lub dostaw może używać tokenów punktów nawigacyjnych i tokenów tras:
Łączenie identyfikatora miejsca ze współrzędnymi geograficznymi
Od wersji 7.4 podczas tworzenia Waypoint możesz podać zarówno identyfikator miejsca, jak i współrzędne geograficzne. Ta metoda jest przydatna, gdy chcesz określić dokładny punkt (szerokość i długość geograficzną), a jednocześnie podać kontekst całego miejsca (identyfikator miejsca). Dzięki temu Navigation SDK może zapewnić lepsze wrażenia podczas dojazdu, wyróżniając budynek docelowy lub pokazując pobliskie punkty zainteresowania powiązane z identyfikatorem miejsca.
// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
.setTitle(destinationName)
.setPlaceIdString(placeId)
.setLatLng(lat, lng)
.build();
// Use this waypoint in navigator.setDestinations()
Uwagi
Gdy podasz zarówno placeId, jak i latlng:
- Trasa jest wyznaczana głównie do określonego parametru
latlng. - Parametr
placeIdjest używany jako kontekst, aby poprawić wrażenia podczas dojazdu. - Wycofanie: jeśli pakiet SDK stwierdzi, że podany parametr
placeIdodpowiada funkcji, która jest zbyt daleko od podanego parametrulatlng, parametrplaceIdzostanie zignorowany. W takim przypadku trasa zostanie wyznaczona tylko do parametrulatlng, a ulepszenia wrażeń podczas dojazdu do miejsca nie będą dostępne.
Podsumowanie prawidłowych konfiguracji punktów pośrednich
| Metoda | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
Zachowanie routingu | Wyróżnianie miejsca docelowego |
|---|---|---|---|---|---|
| Tylko współrzędne geograficzne | zestaw | brak | brak | Kieruje ruch do odcinka drogi najbliższego zdefiniowanym współrzędnym geograficznym | Wyświetlane, jeśli miejsce docelowe można określić z dużą pewnością |
| Tylko identyfikator miejsca | brak | zestaw | brak | Kieruje ruch do domyślnego punktu nawigacyjnego dla identyfikatora miejsca | Z identyfikatora miejsca |
| Tylko token punktu nawigacyjnego | brak | brak | zestaw | Kieruje ruch do dokładnego punktu nawigacyjnego reprezentowanego przez token | Z miejsca docelowego zdefiniowanego w oryginalnej metodzie destinations żądania Geocoding API |
| Połączenie współrzędnych geograficznych i identyfikatora miejsca | zestaw | zestaw | brak | Kieruje ruch do odcinka drogi najbliższego zdefiniowanym współrzędnym geograficznym | Z identyfikatora miejsca, ale nie jest wyświetlany, jeśli identyfikator miejsca jest zbyt daleko od współrzędnych geograficznych |