Recupera i dati delle corse direttamente da Fleet Engine

Questa guida illustra come recuperare i dati dei viaggi direttamente da Fleet Engine, come alternativa all'utilizzo dell'SDK consumer. Puoi utilizzare questo approccio per avere un maggiore controllo sull'esperienza dell'utente finale, continuando a usufruire della posizione, dell'orario di arrivo stimato e del percorso accurati e in tempo reale di Fleet Engine.

Per informazioni dettagliate sull'utilizzo dell'SDK Consumer, consulta Condividere i percorsi per le corse on demand.

Recuperare le informazioni sulla corsa

Per recuperare le informazioni sui viaggi direttamente da Fleet Engine, chiama il metodo GetTrip specificando la visualizzazione JOURNEY_SHARING_V1S. Consulta il riferimento per RPC o REST.

In genere, il server esegue il polling del servizio di corsa per verificare lo stato di ogni corsa mentre il passeggero monitora attivamente l'avanzamento del veicolo. Gli aggiornamenti della posizione del veicolo si verificano in genere ogni 10 secondi e il sistema dovrebbe eseguire il polling alla stessa frequenza. Il campo Trip.last_location.update_time può essere monitorato per verificare se sono stati apportati aggiornamenti dalla chiamata precedente a 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);

L'oggetto Trip risultante ha i seguenti campi compilati con le informazioni più recenti disponibili per la corsa:

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

Recuperare i waypoint rimanenti del viaggio

L'entità Trip contiene un campo ripetuto di tipo TripWaypoint. Questo campo include tutti i waypoint che il veicolo dovrà percorrere, in ordine, prima del punto di consegna finale di questa corsa. La specifica della visualizzazione Condivisione del viaggio indica a Fleet Engine di inserire le informazioni aggiornate in remaining_waypoints[0]TripWaypoint. In altre visualizzazioni diverse da Condivisione del viaggio, questo waypoint solitamente non riflette la posizione più recente del veicolo assegnato. Consulta la documentazione di riferimento per RPC o REST.

Per saperne di più, consulta la sezione Stato della corsa e waypoint rimanenti del veicolo nella guida Introduzione alle corse.

Ecco un esempio del campo remaining_waypoints per un viaggio, Viaggio A:

[0] location.point = trip.pickup_point.point
trip_id = "viaggio_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1° LatLng dal percorso rimanente fino al ritiro
2° LatLng dal percorso rimanente fino al ritiro
Ultimo LatLng dal percorso rimanente fino al ritiro
pickup_point, se diverso dall'ultimo
traffic_data
distance_meters = distanza dal luogo corrente del veicolo (vehicle_location) lungo il percorso fino al punto di ritiro (path_to_waypoint)
eta = orario di arrivo stimato aggiornato
durata = durata aggiornata
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1° LatLng dal tratto di consegna
2° LatLng dal tratto di consegna
Ultimo LatLng dal tratto di consegna
dropoff_point, se diverso dall'ultimo
traffic_data
distance_meters = distanza dal punto di ritiro lungo path_to_waypoint al punto di consegna
eta = orario di arrivo stimato aggiornato
durata = durata della tratta di riconsegna

Con i viaggi consecutivi e condivisi, questo elenco può contenere punti di passaggio di altri viaggi da percorrere prima di questo viaggio. Ad esempio, consideriamo lo scenario in cui la corsa B è assegnata allo stesso veicolo della corsa A. Il campo remaining_waypoints per la corsa A verrà quindi compilato come segue. La maggior parte dei campi è stata omessa per brevità, ma verrebbero completati in modo coerente con l'esempio precedente.

[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

Il campo remaining_waypoint della corsa B verrebbe compilato in modo simile, ma sarebbero presenti solo le tre prime voci, poiché la stazione di ricarica della corsa A non fa parte del percorso della corsa B.