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 używać pakietu konsumenckiego SDK. Dzięki temu możesz lepiej kontrolować wrażenia użytkowników, a jednocześnie korzystać z dokładnej i na bieżąco aktualizowanej lokalizacji pojazdów, szacowanego czasu przybycia i planowania trasy w Fleet Engine.

Szczegółowe informacje o korzystaniu z pakietu SDK dla użytkowników indywidualnych 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.

Twój serwer zwykle sprawdza stan każdej podróży w usłudze podróży, podczas gdy pasażer aktywnie monitoruje postępy pojazdu. Aktualizacje lokalizacji pojazdu występują zwykle co 10 sekund, a Twój system powinien przeprowadzać ankiety 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);

Wygenerowany 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 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 elementach 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 trasy 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[] 1 LatLng z pozostałego odcinka trasy do odbioru
2 LatLng z pozostałego ścieżki do odbioru
ostatnia współrzędna LatLng z pozostałego odcinka trasy do 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 kontrolnego do odbioru
eta = updated ETA
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[] 1 LatLng z lotu z wysadzeniem
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
distance_meters = odległość od miejsca odbioru do miejsca wystawienia docelowego punktu pośredniego,
eta = updated ETA
czas trwania = czas trwania odcinka z odbiorem

W przypadku podróży z wielu przystankami i podróży z współdzieleniem ta lista może zawierać punkty pośrednie z innych podróży, które mają być przejechane przed tą podróżą. Rozważ na przykład scenariusz, w którym trasa B jest przypisana do tego samego pojazdu co trasa 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 zostałyby 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 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.