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

Z tego przewodnika dowiesz się, jak pobierać dane o podróży bezpośrednio z Fleet Engine zamiast korzystać z pakietu Consumer SDK. Możesz użyć tego podejścia, aby mieć większą kontrolę nad wrażeniami użytkowników, a jednocześnie korzystać z dokładnych i aktualizowanych w czasie rzeczywistym informacji o lokalizacji pojazdu, szacowanym czasie przyjazdu i wyznaczaniu trasy w Fleet Engine.

Szczegółowe informacje o korzystaniu z pakietu Consumer SDK znajdziesz w artykule Udostępnianie przejazdów 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.

Serwer zwykle odpytuje usługę dotyczącą przejazdów o stan każdego przejazdu, gdy pasażer aktywnie monitoruje postępy pojazdu. Aktualizacje lokalizacji pojazdu zwykle następują co 10 sekund, a system powinien odpytywać z tą samą częstotliwością. Pole Trip.last_location.update_time można monitorować, aby sprawdzić, czy od poprzedniego wywołania funkcji GetTrip wprowadzono jakieś zmiany.

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

Obiekt Trip zawiera te pola wypełnione najnowszymi dostępnymi informacjami o podróży:

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 trasy

Obiekt Trip zawiera pole powtarzane typu TripWaypoint. To pole zawiera wszystkie punkty pośrednie, przez które pojazd musi przejechać w kolejności przed ostatecznym miejscem docelowym tej podróży. Określenie widoku udostępniania trasy powoduje, że Fleet Engine umieszcza zaktualizowane informacje w polu remaining_waypoints[0] TripWaypoint. W innych widokach niż Udostępnianie przejazdu ten punkt pośredni zwykle nie odzwierciedla najnowszej pozycji przypisanego pojazdu. Zapoznaj się z dokumentacją RPC lub REST.

Więcej informacji znajdziesz w sekcji Stan przejazdu i pozostałe punkty trasy pojazdu w przewodniku Wprowadzenie do przejazdów.

Oto przykład pola remaining_waypoints w przypadku wycieczki A:

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] Pierwszy obiekt LatLng z pozostałej części ścieżki do miejsca odbioru
Drugi obiekt LatLng z pozostałej części trasy do miejsca odbioru
ostatni obiekt LatLng z pozostałej części trasy do miejsca odbioru,
pickup_point, jeśli jest inny niż ostatni;
traffic_data
distance_meters = odległość od bieżącej lokalizacji pojazdu wzdłuż ścieżki do punktu pośredniego do miejsca odbioru
eta = zaktualizowany szacowany czas przybycia
czas trwania = zaktualizowany czas trwania
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] Pierwszy LatLng z odcinka do miejsca docelowego
2nd LatLng from dropoff leg
ostatni obiekt LatLng z odcinka do miejsca wysiadki.
dropoff_point, jeśli jest inny niż ostatni;
traffic_data
distance_meters = odległość od miejsca odbioru wzdłuż ścieżki_do_punktu_przejazdowego do miejsca docelowego
eta = zaktualizowany szacowany czas przybycia
czas trwania = czas trwania odcinka zwrotnego

W przypadku przejazdów z kolejnymi przystankami i przejazdów łączonych ta lista może zawierać punkty pośrednie z innych przejazdów, które należy pokonać przed tą podróżą. Rozważmy na przykład sytuację, w której przejazd B jest przypisany do tego samego pojazdu co przejazd A. Pole remaining_waypoints w przypadku przejazdu A zostanie wypełnione w ten sposób: Większość pól została pominięta ze względu na zwięzłość, ale byłyby one wypełnione zgodnie z poprzednim przykładem.

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

Pole remaining_waypoint w przypadku przejazdu B zostanie wypełnione w podobny sposób, ale będą w nim tylko 3 pierwsze wpisy, ponieważ punkt docelowy przejazdu A nie jest częścią trasy przejazdu B.