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 stanowi 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 lokalizacji pojazdu, szacowanego czasu dotarcia na miejsce i wyznaczania trasy w czasie rzeczywistym w Fleet Engine.

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

Pobieranie informacji o podróży

Aby pobrać informacje o przejeździe bezpośrednio z Fleet Engine, wywołaj metodę GetTrip, podając widok JOURNEY_SHARING_V1S. Więcej informacji znajdziesz w dokumentacji RPC lub REST.

Gdy pasażer aktywnie śledzi postępy pojazdu, serwer zwykle odpytuje usługę podróży o stan każdej podróży. Lokalizacja pojazdu jest zwykle aktualizowana co 10 sekund i system powinien wysyłać zapytania z taką 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 przejazdu

Encja Trip zawiera pole powtarzane typu TripWaypoint. To pole zawiera wszystkie punkty pośrednie, 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 pośredni zwykle nie odzwierciedla najnowszej pozycji przypisanego pojazdu. Więcej informacji znajdziesz w dokumentacji RPC lub REST.

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

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[] Pierwsza para współrzędnych szer. i dł. geogr. z pozostałej trasy do miejsca odbioru
2. punkt LatLng z pozostałej części trasy do miejsca odbioru
…
ostatni obiekt LatLng z pozostałej ścieżki 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 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[] Pierwszy obiekt LatLng z odcinka do miejsca wysiadki
Druga szerokość i długość geograficzna z etapu wysiadania
…
ostatni obiekt LatLng z odcinka 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 wysiadki
eta = zaktualizowany szacowany czas dotarcia na miejsce
duration = czas trwania odcinka wysiadki

W przypadku przejazdów z kolejnymi przystankami i przejazdów wspólnych 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 podróży 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 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.