Recupera i dati delle corse direttamente da Fleet Engine

Questa guida mostra come recuperare i dati dei viaggi direttamente da Fleet Engine, in alternativa all'utilizzo dell'SDK consumer. Puoi utilizzare questo approccio per avere un maggiore controllo sull'esperienza dell'utente finale, sfruttando al contempo la posizione accurata e in tempo reale del veicolo, l'ETA e l'itinerario di Fleet Engine.

Per informazioni dettagliate sull'utilizzo dell'SDK consumer, consulta Condividere i viaggi per gli spostamenti on demand.

Recuperare le informazioni sul viaggio

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

Il server in genere esegue il polling del servizio di viaggio per lo stato di ogni viaggio mentre il passeggero monitora attivamente l'avanzamento del veicolo. Gli aggiornamenti della posizione del veicolo in genere si verificano ogni 10 secondi e il sistema dovrebbe eseguire il polling alla stessa velocità. Il campo Trip.last_location.update_time può essere monitorato per verificare se sono stati apportati aggiornamenti dall'ultima chiamata 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 il viaggio:

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 arrivo finale di questa corsa. Se specifichi la visualizzazione Condivisione viaggio, indichi a Fleet Engine di inserire le informazioni aggiornate in remaining_waypoints[0] TripWaypoint. In altre visualizzazioni non di Condivisione itinerario, questo waypoint di solito non riflette l'ultima posizione del veicolo assegnato. Consulta il riferimento per RPC o REST.

Per saperne di più, consulta Stato della corsa e waypoint rimanenti del veicolo nella Guida introduttiva alle corse.

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

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1° LatLng del percorso rimanente fino al punto di ritiro
2° LatLng dal percorso rimanente al punto di partenza
ultimo LatLng del percorso rimanente fino al ritiro
pickup_point, se diverso dall'ultimo
traffic_data
distance_meters = distanza dalla posizione attuale di vehicle_location lungo path_to_waypoint fino al ritiro
eta = updated ETA
duration = updated duration
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1° LatLng dalla tratta di consegna
2° LatLng dalla tratta di rilascio
Ultimo LatLng del tratto di consegna
dropoff_point, se diverso dall'ultimo
traffic_data
distance_meters = distanza dal punto di partenza lungo path_to_waypoint al punto di arrivo
eta = updated ETA
duration = durata della tratta di riconsegna

Con i viaggi in pooling consecutivi e condivisi, questo elenco potrebbe contenere waypoint di altri viaggi da percorrere prima di questo. Ad esempio, considera lo scenario in cui la corsa B viene assegnata allo stesso veicolo della corsa A. Il campo remaining_waypoints per il viaggio A verrà quindi compilato come segue. La maggior parte dei campi è stata omessa per brevità, ma verrebbe compilata 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 verrà compilato in modo simile, ma saranno presenti solo le prime tre voci, poiché il punto di arrivo della corsa A non fa parte del percorso della corsa B.