Pobieranie danych podróży bezpośrednio z Fleet Engine

Pakiet Consumer SDK zapewnia gotową funkcję aplikacji do wspólnych przejazdów, która umożliwia wyświetlanie lokalizacji i postępów pojazdu jadącego.

Niektórzy dostawcy usług wspólnych przejazdów chcą jednak mieć większą kontrolę nad wrażeniami użytkowników dzięki elastycznej integracji, a jednocześnie korzystać z dokładnej lokalizacji pojazdu, szacowanego czasu dotarcia i trasy oferowanej w czasie rzeczywistym przez Google. Z tego przewodnika dowiesz się, jak pobierać dane o podróżach bezpośrednio z Fleet Engine jako alternatywę dla pakietu Consumer SDK.

Przegląd

Aby bezpośrednio pobrać informacje o podróży z Fleet Engine, wywołaj metodę GetTrip, określając widok JURNEY_SHARING_V1S (RPC | REST).

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-A";

String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
GetTripRequest getTripRequest =
    GetTripRequest.newBuilder()
        .setName(tripName)
        .setView(JOURNEY_SHARING_V1S)
        .build();
Trip trip = tripService.getTrip(getTripRequest);

Utworzony obiekt Podróż (RPC | REST) będzie mieć te pola wypełnione najnowszymi dostępnymi informacjami o podróży:

  • name
  • vehicle_id
  • trip_status
  • trip_type
  • number_of_passengers
  • pickup_point
  • actual_pickup_point
  • pickup_time
  • intermediate_destinations
  • intermediate_destinations_version
  • intermediate_destination_index
  • dropoff_point
  • actual_dropoff_point
  • dropoff_time
  • remaining_waypoints
  • last_location
  • view (== UDOSTĘPNIANIE_podróży)

Firmy oferujące wspólne przejazdy zwykle sprawdzają w tej usłudze stan każdej podróży co 2–5 sekund, gdy pasażer aktywnie monitoruje postępy pojazdu. Lokalizacja pojazdu jest zwykle aktualizowana co jakiś czas, np. do 10 sekund. Pole Trip.last_location.update_time można monitorować, aby sprawdzić, czy od poprzedniego wywołania GetTrip pojawiły się jakieś zmiany.

Punkty na trasie podróży

Element Podróż zawiera powtórzone pole typu TripWaypoint (RPC | REST). To pole obejmuje wszystkie punkty pośrednie, którymi pojazd będzie musiał się przemieścić, przed ostatnim punktem w tej podróży. Określenie widoku udostępniania serii czynności powoduje, że Fleet Engine umieszcza zaktualizowane informacje w pozostałych punktach pośrednich[0] TripWaypoint. W innych widokach innych niż Udostępnianie trasy punkt pośredni nie odzwierciedla zwykle ostatniej pozycji przypisanego pojazdu.

Oto przykład pola remaining_waypoints w podróży A:

[0] location.point = travel.pickup_point.point
travel_id = "trip_A"
typ_punktu_wejścia = PICKUP_WAYPOINT_TYPE
ścieżka_do_punktu_wejścia = długość geograficzna[] Pierwsza długość geograficzna od pozostałej ścieżki do odbioru
Druga długość geograficzna od pozostałej ścieżki do odbioru
...
ostatnia długość geograficzna od pozostałej ścieżki do odbioru
pickup_point, jeśli różni się od ostatniego
traffic_data
odległość_w_metrach = odległość od bieżącej lokalizacji pojazdu na ścieżce_do_punktu_odbioru
eta = zaktualizowany szacowany czas dotarcia
czas trwania = zaktualizowany czas trwania
[1] location.point = travel.dropoff_point.point
travel_id = "trip_A"
typ_punktu_środkowego = DROP_OFF_WAYPOINT_TYPE
ścieżka_do_punktu_wejścia = długość geograficzna[] 1. szerokość geograficzna od etapu zjazdu
Druga część trasy od etapu zjazdu
...
Ostatni plan podróży z etapu zjazdu
dropoff_point, jeśli różni się od ostatniego
traffic_data
odległość_w_metrach = odległość od miejsca odbioru wzdłuż ścieżki_do_punktu_wyjścia do punktu odbioru
eta = zaktualizowany szacowany czas dotarcia
czas trwania = czas trwania zjazdu

W przypadku podróży po obu stronach lub wspólnych (podwożeniem) lista może zawierać punkty pośrednie z innych podróży, które zostaną przebyte podczas tej podróży. Rozważmy na przykład scenariusz, w którym Podróż B jest przypisana do tego samego pojazdu co podróż A. Pole remaining_waypoints dla podróży A zostanie wypełnione w ten sposób: (Większość pól została pominięta ze względu na zwięzłość, ale zostaną one wypełnione zgodnie z poprzednim przykładem).

[0] travel_id = "trip_A"
typ_punktu_wejścia = PICKUP_WAYPOINT_TYPE
[1] travel_id = "trip_B"
typ_punktu_wejścia = PICKUP_WAYPOINT_TYPE
[2] travel_id = "trip_B"
typ_punktu_środkowego = DROP_OFF_WAYPOINT_TYPE
[3] travel_id = "trip_A"
typ_punktu_środkowego = DROP_OFF_WAYPOINT_TYPE

Pole remaining_waypoint w podróży B zostałoby wypełnione podobnie, ale znalazłyby się tylko 3 pierwsze wpisy, ponieważ punkt zwrotu w podróży A nie należy do trasy Podróży B.