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, co jest alternatywą dla korzystania z pakietu SDK dla klientów. Możesz użyć tego podejścia, aby mieć większą kontrolę nad wrażeniami użytkowników, a jednocześnie korzystać z dokładnej i aktualizowanej w czasie rzeczywistym lokalizacji pojazdu, szacowanego czasu dotarcia na miejsce i trasy w Fleet Engine.

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

Pobieranie informacji o podróży

Aby pobrać informacje o przejeździe bezpośrednio z silnika floty, wywołaj metodę GetTrip, podając widok JOURNEY_SHARING_V1S. Zapoznaj się z dokumentacją RPC lub REST.

Serwer zwykle odpytuje usługę przejazdów o stan każdego przejazdu, gdy pasażer aktywnie monitoruje postęp pojazdu. Lokalizacja pojazdu jest zwykle aktualizowana co 10 sekund i system powinien odpytywać z taką samą częstotliwością. Możesz monitorować pole Trip.last_location.update_time, aby sprawdzić, czy od poprzedniego wywołania GetTrip pojawiły się jakieś aktualizacje.

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 te pola wypełnione najnowszymi dostępnymi informacjami o przejeździe:

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 na trasie przejazdu

Encja Przejazd zawiera pole powtarzane typu TripWaypoint. To pole zawiera wszystkie punkty na trasie, które pojazd musi pokonać w odpowiedniej kolejności, zanim dotrze do końcowego punktu wysiadania. Określenie widoku udostępniania przejazdu powoduje, że Fleet Engine umieszcza zaktualizowane informacje w polu remaining_waypoints[0]TripWaypoint. W innych widokach, które nie są widokami udostępniania przejazdu, ten punkt zwykle nie odzwierciedla najnowszej pozycji przypisanego pojazdu. Więcej informacji znajdziesz w dokumentacji RPC lub REST.

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

Oto przykład pola remaining_waypoints dla przejazdu A:

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] Pierwsza para współrzędnych szerokości i długości geograficznej z pozostałej trasy do miejsca odbioru
Druga szerokość i długość geograficzna z pozostałej trasy do miejsca odbioru
…
ostatnia szerokość i długość geograficzna z pozostałej ścieżki do odbioru
pickup_point, jeśli jest inny niż ostatni;
traffic_data
distance_meters = odległość od bieżącej lokalizacji pojazdu (vehicle_location) wzdłuż ścieżki do punktu orientacyjnego (path_to_waypoint) do miejsca odbioru
eta = zaktualizowany szacowany czas dotarcia na miejsce
duration = updated duration
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] Pierwsza szerokość i długość geograficzna z odcinka wysiadania
Drugie współrzędne LatLng z etapu wysiadania
…
ostatnia szerokość i długość geograficzna z etapu wysiadania.
dropoff_point, jeśli jest inny niż ostatni;
traffic_data
distance_meters = odległość od miejsca odbioru do miejsca wysiadki wzdłuż ścieżki path_to_waypoint
eta = zaktualizowany szacowany czas dotarcia na miejsce
duration = drop-off leg duration

W przypadku przejazdów łączonych i współdzielonych 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 dla przejazdu A zostanie wypełnione w następujący sposób. Większość pól została pominięta ze względu na zwięzłość, ale został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 przejazdu B zostałoby wypełnione podobnie, ale zawierałoby tylko pierwsze 3 wpisy, ponieważ punkt wysiadania przejazdu A nie jest częścią trasy przejazdu B.