Wyznaczanie trasy do punktów nawigacyjnych

Pakiet SDK do nawigacji 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 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ą 7.4 można było zdefiniować Waypoint za pomocą współrzędnych szerokości i długości geograficznej 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 fragmentu drogi, który może nie być najwygodniejszym lub prawidłowym punktem nawigacyjnym.

Ulepszone opcje punktów na trasie rozwiązują ten problem, umożliwiając podanie większej ilości informacji kontekstowych.

Używanie tokena punktu nawigacyjnego

Aby uzyskać najdokładniejsze wskazówki dojazdu do konkretnych punktów nawigacyjnych, 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. Utwórz Waypoint za pomocą metody setNavigationPointToken() w kreatorze.
// 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ą interfejsu Geocoding API, token trasy z interfejsu Routes API, a następnie przekazać oba tokeny do pakietu Navigation SDK. Jest to przydatne w sytuacjach takich jak przejazd współdzielony lub dostawa, 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 przejazd odbędzie się dłuższą lub krótszą trasą, 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 używa tokenów punktów nawigacyjnych i tokenów tras:

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

Połączenie identyfikatora miejsca oraz szerokości i długości geograficznej

Począwszy od wersji 7.4, podczas tworzenia obiektu 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ą), podając jednocześnie kontekst całego miejsca (identyfikator miejsca). Dzięki temu pakiet SDK do nawigacji może zapewnić lepsze wrażenia po dotarciu na miejsce, wyróżniając budynek docelowy lub pokazując pobliskie miejsca zwią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

Jeśli podasz zarówno placeId, jak i latlng:

  • Trasa jest kierowana głównie na określony latlng.
  • placeId jest używany jako kontekst, aby ułatwić dotarcie na miejsce.
  • Kreacja zastępcza: jeśli pakiet SDK określi, że podany parametr placeId odpowiada funkcji, która jest zbyt daleko od podanego parametru latlng, parametr placeId zostanie zignorowany. W takim przypadku wyznaczanie trasy będzie prowadzić tylko do latlng, a ulepszenia dotyczące przybycia do konkretnego miejsca nie będą dostępne.

Podsumowanie prawidłowych konfiguracji punktów na trasie

Metoda setLatLng() setPlaceIdString() setNavigationPointToken() Działanie routingu Wyróżnianie miejsc docelowych
Tylko współrzędne geograficzne 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 geograficzne 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.