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 z dojazdu, zwłaszcza w przypadku miejsc docelowych z wieloma wejściami lub określonymi 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, kierowanie wyłącznie na szerokość i długość geograficzną 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 najdokładniejszym punktem nawigacyjnym.

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

Używanie tokena punktu nawigacyjnego

Aby uzyskać najdokładniejsze wskazówki dojazdu do konkretnych punktów nawigacyjnych, takich jak wejścia, rampy załadunkowe lub wyznaczone miejsca odbioru, możesz użyć parametru navigationPointToken. Ten token uzyskuje się, wywołując metodę destinations interfejsu Geocoding API. Reprezentuje konkretny punkt nawigacyjny powią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. Utwórz Waypoint za pomocą metody setNavigationPointToken() w konstruktorze.

Uwaga: jeśli używasz setNavigationPointToken(), nie możesz jednocześnie używać setLatLng() ani setPlaceIdString(). Te metody wykluczają się wzajemnie z 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 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 wspólne przejazdy czy dostawy, w których używasz interfejsu Routes API do obliczania ceny przejazdu i potrzebujesz precyzji tokena punktu nawigacyjnego.

Token trasy wpływa na wybór trasy przez Navigation SDK, faworyzując 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ć „szoki cenowe”.

Więcej informacji o określaniu lokalizacji za pomocą tokena punktu nawigacyjnego i tworzeniu 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 przypadku 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 ze współrzędnymi geograficznymi

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ą), 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.

// 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 służy jako kontekst, który zwiększa komfort przyjazdu.
  • Wycofanie: jeśli pakiet SDK stwierdzi, że podany parametr placeId odpowiada funkcji, która jest zbyt oddalona od podanego parametru latlng, parametr placeId zostanie zignorowany. W takim przypadku trasa będzie prowadzić tylko do latlng, a ulepszenia dotyczące miejsca docelowego nie będą dostępne.

Podsumowanie prawidłowych konfiguracji punktów pośrednich

Metoda setLatLng() setPlaceIdString() setNavigationPointToken() Działanie routingu Wyróżnianie miejsca docelowego
Tylko współrzędne geograficzne zestaw brak brak Trasy 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 Z identyfikatora miejsca
Tylko token punktu nawigacyjnego brak brak zestaw trasy do dokładnego punktu nawigacyjnego reprezentowanego przez token. Z miejsca docelowego określonego w oryginalnym żądaniu metody miejsc docelowych interfejsu Geocoding API
Połączenie współrzędnych geograficznych szerokości i długości z identyfikatorem miejsca zestaw zestaw brak Trasy do segmentu drogi najbliższego określonych współrzędnych na podstawie identyfikatora miejsca, ale nie jest wyświetlany, jeśli identyfikator miejsca jest zbyt oddalony od współrzędnych geograficznych.