Interfejs Route Przegląd API

Route Review API to rozwiązanie Last Mile Fleet Solution, stworzone na podstawie pakietu DriverSDK. Dzięki niemu możesz pobierać informacje o trasie konkretnego pojazdu – jednorazowe lub stale, korzystając z odbiornika. 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 być uruchomiona w kanale 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. Dane te można dostarczyć przez interfejsy API w pakiecie DriverSDK (DeliveryDriverApi) lub bezpośrednio w Fleet Engine.

Etapy integracji

W tej sekcji opisano podstawowe kroki niezbędne do integracji aplikacji sterowników 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.
  • Udało Ci się zainicjować DeliveryDriverApi w aplikacji za pomocą obiektu kontekstu,

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

Krok 0. Skonfiguruj trasę

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

Aby wczytać informacje o przystankach i zadaniach do Fleet Engine, musisz mieć pojazd dostawczy przypisany do prawidłowej trasy. Dzieje się tak, ponieważ Route Review API wymaga prawidłowych tras w celu pobierania danych. Prawidłowe trasy składają się z serii 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 Fleet Engine API.

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 pakietu DeliveryDriverApi w pakiecie DriverSDK, ponieważ obiekt odwołuje się do tego samego identyfikatora pojazdu, który został zdefiniowany 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żyć obiektu VehicleRouteOverview do interakcji z funkcjami przeglądu trasy. Dzięki temu aplikacja może korzystać z informacji o trasie podanych przez Ciebie podczas konfigurowania trasy. Używaj detektora zdarzeń interfejsu API, aby ułatwić aktualizowanie zdarzeń i pobieranie trasy.

Zdarzenie zmiany trasy ma miejsce za każdym razem, gdy ścieżka do dowolnego z przystanków przypisanych do pojazdu zostanie zaktualizowana, postoje zmieni się albo gdy Fleet Engine zaktualizuje informacje o szacowanym czasie dotarcia.


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

Krok 3. Włącz interfejs API

Gdy masz już wszystko gotowe do korzystania z informacji o trasie, musisz włączyć interfejs API, aby mógł odpowiadać na zdarzenia związane z pojazdami. Pamiętaj, że interfejs API jest zainicjowany w stanie wyłączonym, co pozwala 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 uzyskasz listę zasobów typu RouteToVehicleStop, możesz ich używać w swojej aplikacji. Możesz na przykład narysować ścieżkę linii łamanej trasy w wystąpieniu Map Google. Poniższy fragment kodu przedstawia przykład, który rysuje linię łamaną trasy w widoku mapy i dodaje znaczniki do lokalizacji 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

Spowoduje to wyświetlenie widoku podobnego do tego na zrzucie ekranu po prawej stronie:

Krok 5. Pobierz zrzut trasy

Jeśli chcesz, aby aplikacja wykonała jednorazowe wywołanie w celu pobrania migawki bieżących informacji o trasie, możesz skorzystać z tej metody, aby pobrać te dane:

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

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

Krok 6. Wyczyść dane

Jeśli Twoja aplikacja nie potrzebuje już funkcji opisu trasy, upewnij się, że została wyczyszczona. Czyszczenie danych pozwala uniknąć niepotrzebnej pamięci, przetwarzania i wykorzystania sieci w aplikacji.

Usuwanie konkretnego detektora zdarzeń

Usuń detektor zdarzeń, gdy nie jest już potrzebny.

vehicleRouteOverview.removeOnRouteChangedEventListener(listener);

Wyczyść wszystkie detektory zdarzeń

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

vehicleRouteOverview.clearEventListeners();

Czyszczenie instancji interfejsu RouteOverview API

Jeśli Informacje o trasie nie są już potrzebne lub zmienił się identyfikator pojazdu objętego śledzeniem, możesz wywołać ten interfejs API, aby usunąć odwołania wewnętrzne.

vehicleRouteOverview.clearInstance();