Interfejs Route Przegląd API

Route Review API to usługa Last Mile Fleet Solution, która korzysta z pakietu DriverSDK. Za jego pomocą możesz pobierać informacje o trasie dla danego pojazdu, zarówno w postaci jednorazowego pobrania, jak i w trybie ciągłym, korzystając z odbiornika w celu przesyłania aktualizacji. Interfejs Route Review API obsługuje te rodzaje informacji:

  • Pełny plan trasy, w tym lokalizacje przystanków, czas podróży i odległości
  • Ścieżka linii łamanej trasy między każdym przystankiem.

W tym dokumencie opisano kroki integracji z interfejsem API Twojej aplikacji.

Wymagania wstępne

  • Aplikacja na Androida musi korzystać z kanału alfa pakietu DriverSDK w wersji 4.1.0 lub nowszej. Kanał alfa jest dostępny przy użyciu parametru transportation-driver-alpha jako identyfikatora artefaktu Maven.
  • Interfejs API wykorzystuje informacje o trasach dostarczone przez Fleet Engine za pomocą interfejsu Deliveries API. Można je udostępnić za pomocą interfejsów API w pakiecie DriverSDK (DeliveryDriverApi) lub bezpośrednio w Fleet Engine.

Etapy integracji

W tej sekcji omawiamy podstawowe kroki niezbędne do integracji aplikacji sterownika na Androida z interfejsem API. W tych instrukcjach zastosowano następujące założenia:

  • Masz aplikację na Androida, która jest już zintegrowana z pakietem Driver SDK
  • DeliveryDriverApi został zainicjowany w aplikacji z obiektem kontekstu,

Więcej informacji znajdziesz w artykule o pierwszych krokach z pakietem Driver SDK na Androida.

Krok 0. Konfiguracja trasy

Możesz pominąć ten krok, jeśli masz już skonfigurowaną usługę Fleet Engine i możesz tworzyć zadania zatrzymania oraz dostawy pojazdów.

Aby wczytać do Fleet Engine informacje o przystankach i zadaniach, musisz mieć pojazd dostawczy przypisany do prawidłowej trasy. Dzieje się tak, ponieważ Route Review API wymaga prawidłowych tras do pobierania danych. Prawidłowe trasy obejmują serię punktów pośrednich i przystanków, a przystanek może istnieć tylko wtedy, gdy ma co najmniej jedno powiązane zadanie. Więcej informacji znajdziesz w przewodniku po integracji interfejsu API Fleet Engine.

Krok 1. Zainicjuj interfejs API

Po ustanowieniu prawidłowej trasy z powiązanymi przystankami i zadaniami możesz zainicjować interfejs Route Review API. Inicjowanie zapewnia platformę niezbędną do połączenia między Fleet Engine a interfejsem API. Interfejs RouteOverview API powinien być zainicjowany przy użyciu tego samego obiektu kontekstu, który został użyty do zainicjowania interfejsu DeliveryDriverApi w pakiecie DriverSDK, ponieważ obiekt odwołuje się do identyfikatora pojazdu zdefiniowanego wcześniej w obiekcie DriverContext. Poniższy przykład pokazuje, jak utworzyć instancję RouteOverviewApi.


RouteOverviewApi api = RouteOverviewApi.getInstance();
if (api == null) {
    api = RouteOverviewApi.createInstance(context);
}

Krok 2. Zarejestruj pojazd na potrzeby zdarzeń zmiany trasy

Po zainicjowaniu interfejsu API możesz używać obiektu VehicleRouteOverview do interakcji z funkcjami przeglądu tras. Dzięki temu aplikacja będzie mogła korzystać z informacji o trasie podanych przez Ciebie podczas konfigurowania trasy. Używać detektora zdarzeń interfejsu API do obsługi aktualizacji zdarzeń i pobierania trasy.

Zdarzenie zmiany trasy ma miejsce, gdy zaktualizujesz ścieżkę do dowolnego z przystanków przypisanych do pojazdu, zmieni się kolejność przystanków lub gdy Fleet Engine zaktualizuje informacje o szacowanym czasie dotarcia na miejsce.


vehicleRouteOverview.addOnRouteChangedEventListener(event -> {
    // handle route update events
});

Krok 3. Włącz interfejs API

Teraz gdy chcesz korzystać z informacji o trasie, musisz włączyć interfejs API, aby zezwolić mu na odpowiadanie na zdarzenia związane z pojazdami. Pamiętaj, że interfejs API jest zainicjowany w stanie wyłączonym, aby uniknąć niepotrzebnego wykorzystania przepustowości sieci.

vehicleRouteOverview.setRouteOverviewEnabled(true);

W każdej chwili możesz wstrzymać te aktualizacje, wywołując tę samą metodę z wartością false.

Krok 4. Narysuj trasę na Mapie Google

Gdy wygenerujesz listę RouteToVehicleStop, możesz użyć jej w swojej aplikacji. Na przykład ścieżkę linii łamanej trasy można narysować w instancji Map Google. Poniższy fragment kodu przedstawia przykład, który rysuje linię łamaną trasy w widoku mapy i dodaje znaczniki na górze każdego przystanku.

    GoogleMap googleMap = … // Instance of the Map view you are using
    ImmutableList<RouteToVehicleStop> route = event.newRoute();

    PolylineOptions routePolyline = new PolylineOptions().color(Color.BLUE);
    for (RouteToVehicleStop stop : route) {
        routePolyline.addAll(stop.path());

        MarkerOptions marker =
            new MarkerOptions().position(stop.vehicleStop().getWaypoint().getPosition());
        googleMap.addMarker(marker);
    }

    googleMap.addPolyline(routePolyline);
}

Zrzut ekranu przedstawiający opis trasy

Wyświetli się widok podobny do zrzutu ekranu po prawej stronie:

Krok 5. Pobierz zrzut trasy

Jeśli chcesz, aby aplikacja wysyłała jednorazowe wywołanie w celu pobrania zrzutu bieżących informacji o trasie, możesz je pobrać za pomocą tej metody:

ListenableFuture<ImmutableList<RouteToVehicleStop> future = vehicleRouteOverview.getRouteToVehicleStops();
ImmutableList<RouteToVehicleStop> stops = future.get();

Możesz to zrobić, zamiast subskrybować aktualizacje tras za pomocą detektorów zdarzeń.

Krok 6. Wyczyść dane

Jeśli nie potrzebujesz już funkcji przeglądu trasy, musisz ją wyczyścić. Czyszczenie pozwala uniknąć niepotrzebnej pamięci, przetwarzania i wykorzystania sieci w aplikacji.

Usuwanie konkretnego detektora zdarzeń

Jeśli dany odbiornik nie jest już potrzebny, usuń go.

vehicleRouteOverview.removeOnRouteChangedEventListener(listener);

Usuń wszystkie detektory zdarzeń

W ramach procedury czyszczenia możesz usunąć wszystkie różne detektory zdarzeń zarejestrowane jednocześnie.

vehicleRouteOverview.clearEventListeners();

Wyczyszczenie instancji interfejsu Route Review API

Gdy opis trasy nie jest już potrzebny lub identyfikator śledzonego pojazdu uległ zmianie, możesz wywołać ten interfejs API, aby wyczyścić wewnętrzne odniesienia.

vehicleRouteOverview.clearInstance();