Recupera i dati delle corse direttamente da Fleet Engine

Questa guida mostra come recuperare i dati di viaggio direttamente da Fleet Engine, come alternativa all'utilizzo dell'SDK consumer. Puoi utilizzare questo approccio per un maggiore controllo sull'esperienza dell'utente finale, sfruttando al contempo la posizione del veicolo, l'orario di arrivo stimato e i percorsi precisi e in tempo reale di Fleet Engine.

Per maggiori dettagli sull'utilizzo dell'SDK consumer, consulta Condividere i percorsi per le corse on demand.

Recuperare informazioni sulla corsa

Per recuperare le informazioni sulla corsa direttamente da Fleet Engine, chiama il metodo GetTrip, specificando la vista JOURNEY_SHARING_V1S. Consulta la documentazione di riferimento per RPC o REST.

In genere il server esegue il polling del servizio di corsa per conoscere 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

Recupera le tappe di viaggio rimanenti

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 il riferimento per RPC o REST.

Per ulteriori informazioni, consulta Stato del viaggio e tappe rimanenti del veicolo nella guida Introduzione ai viaggi.

Ecco un esempio del campo remaining_waypoints per una corsa, Percorso A:

[0] location.point = trip.pickup_point.point
trip_id = "viaggio_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] Primo LatLng dal percorso rimanente alla partenza
Secondo LatLng dal percorso rimanente alla partenza
Ultimo LatLng dal percorso rimanente fino al ritiro
pickup_point, se diverso da ultimo
traffic_data
distanze_meters = distanza dall'attuale posizione del veicolo lungo il percorso path_to_waypoint al punto di ritiro
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 dalla fase di discesa
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 gamba di discesa

Con corse consecutive e di raggruppamento condivise, questo elenco può contenere tappe di altre corse da attraversare prima di questa corsa. Ad esempio, consideriamo lo scenario in cui la corsa B è assegnata allo stesso veicolo della corsa A. Il campo remaining_waypoints per il viaggio A verrebbe 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.