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

Z tego przewodnika dowiesz się, jak pobierać dane podróży bezpośrednio z Fleet Engine, co stanowi alternatywę dla korzystania z pakietu Consumer SDK. Możesz zastosować to podejście, aby zyskać większą kontrolę nad wrażeniami użytkowników, a jednocześnie korzystać z dokładnej lokalizacji pojazdu, czasu dotarcia na miejsce i wyznaczania tras w czasie rzeczywistym dostępnej w usłudze Fleet Engine.

Szczegółowe informacje o korzystaniu z pakietu SDK Consumer SDK znajdziesz w artykule Udostępnianie tras na żądanie.

Pobieranie informacji o podróży

Aby pobrać informacje o podróży bezpośrednio z Fleet Engine, wywołaj metodę GetTrip, podając widok JOURNEY_SHARING_V1S. Zapoznaj się z dokumentacją RPC lub REST.

Twój serwer zwykle sprawdza stan każdej podróży w usłudze podróży, podczas gdy pasażer aktywnie monitoruje postępy pojazdu. Dane o lokalizacji pojazdu są zwykle aktualizowane co 10 sekund. System powinien przeprowadzać ankietę z taką samą częstotliwością. Pole Trip.last_location.update_time można monitorować, aby sprawdzić, czy zaszły jakieś zmiany od poprzedniego wywołania funkcji GetTrip.

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);

Powstały obiekt Trip zawiera najnowsze dostępne informacje o podróży w tych polach:

name trip_status remaining_waypoints
vehicle_id trip_type last_location
number_of_passengers pickup_point view (== JOURNEY_SHARING_V1S)
actual_pickup_point intermediate_destinations intermediate_destination_index
pickup_time intermediate_destinations_version dropoff_point
actual_dropoff_point dropoff_time

Pobieranie pozostałych punktów pośrednich trasy

Podmiot Podróż zawiera powtarzalne pole typu TripWaypoint. Pole to zawiera wszystkie punkty pośrednie, przez które pojazd musi przejechać w kolejności, zanim dotrze do ostatniego punktu docelowego. Określanie widoku Udostępnianie trasy powoduje, że Fleet Engine umieszcza zaktualizowane informacje w remaining_waypoints[0]TripWaypoint. W innych widokach, które nie są związane z udostępnianiem trasy, ten punkt kontrolny zazwyczaj nie odzwierciedla najnowszej pozycji przypisanego pojazdu. Zapoznaj się z dokumentacją dotyczącą RPC lub REST.

Więcej informacji znajdziesz w sekcji Stan podróży i pozostałe punkty drogi pojazduPrzewodniku po podróżach.

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

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] Pierwsza długość geograficzna od pozostałej ścieżki do odbioru
Druga długość geograficzna od pozostałej ścieżki do odbioru
ostatnia szerokość i długość geograficzna z pozostałego odcinka trasy do odbioru,
pickup_point, jeśli jest inny niż ostatni
traffic_data
długość_metrów = odległość od bieżącej lokalizacji pojazdu na ścieżce do_punktu_kierunkowego do punktu odbioru
eta = updated ETA
czas trwania = zaktualizowany czas trwania
[1] location.point = travel.dropoff_point.point
journey_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
ścieżka_do_punktu pośredniego = szer.Lng[] 1st LatLng from dropoff leg
2 LatLng z odcinka z wysadzeniem
ostatnia współrzędna LatLng z etapu z wysadzeniem
dropoff_point, jeśli jest inny niż ostatni;
traffic_data
odległości_metrów = odległość od punktu odbioru na ścieżce do_drogi do punktu wyjścia
eta = zaktualizowany ETA
duration = czas trwania nogi zwrotnej

W przypadku podróży w obie strony i podróży w ramach współdzielonego carpoolingu lista może zawierać punkty pośrednie z innych podróży, które mają być pominięte. Rozważmy na przykład scenariusz, w którym Podróż B jest przypisana do tego samego pojazdu co Podróż A. Pole remaining_waypoints dla wyprawy A zostanie wypełnione w ten sposób: Większość pól została pominięta ze względu na zwięzłość, ale zostałyby wypełnione zgodnie z poprzednim przykładem.

[0] trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
[1] journey_id = "trip_B"
waypoint_type = PICKUP_WAYPOINT_TYPE
[2] journey_id = "trip_B"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
[3] trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE

Pole remaining_waypoint w podróży B będzie wypełnione w podobny sposób, ale tylko pierwsze 3 hasła będą obecne, ponieważ punkt docelowy w podróży A nie jest częścią trasy w podróży B.