Wyznaczanie trasy do punktów nawigacyjnych

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:

  1. Uzyskaj navigationPointToken z metody Destinations odpowiedzi Geocoding API.
  2. Utwórz Waypoint za pomocą metody setNavigationPointToken() 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:

Diagram przedstawiający przypadek użycia w przypadku przejazdów lub dostaw
Diagram przedstawiający przypadek użycia przejazdu współdzielonego lub dostawy

Łą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 placeId jest używany jako kontekst, aby poprawić wrażenia podczas dojazdu.
  • Wycofanie: jeśli pakiet SDK stwierdzi, że podany parametr placeId odpowiada funkcji, która jest zbyt daleko od podanego parametru latlng, parametr placeId zostanie zignorowany. W takim przypadku trasa zostanie wyznaczona tylko do parametru latlng, 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