Recupera i dati delle corse direttamente da Fleet Engine

Questa guida mostra come recuperare i dati dei percorsi 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 del veicolo, l'orario di arrivo stimato e il percorso accurati e in tempo reale di Fleet Engine.

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

Recuperare informazioni sul viaggio

Per recuperare le informazioni sulla corsa 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 percorso per lo stato di ogni percorso mentre il passeggero monitora attivamente l'avanzamento del veicolo. In genere, gli aggiornamenti della posizione dei veicoli vengono eseguiti ogni 10 secondi e il tuo sistema deve eseguire il polling con la 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 contiene i seguenti campi compilati con le informazioni più recenti disponibili per il percorso:

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 i waypoint rimanenti del percorso

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 della condivisione del percorso, Fleet Engine inserisce le informazioni aggiornate in remaining_waypoints[0] TripWaypoint. In altre visualizzazioni non relative a Journey Sharing, 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 tappe rimanenti del veicolo nella guida Introduzione alle corse.

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

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] Primo LatLng dal percorso rimanente al punto di ritiro
2° LatLng dal percorso rimanente per il ritiro
…
Ultimo LatLng del percorso rimanente fino al punto di partenza
pickup_point, se diverso dall'ultimo
traffic_data
distance_meters = distanza dalla posizione attuale del veicolo lungo il percorso verso il waypoint per il ritiro
eta = orario di arrivo stimato aggiornato
duration = updated duration
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] Primo LatLng della tratta di arrivo
2° LatLng della tratta di consegna
…
Ultimo LatLng della tratta di arrivo
dropoff_point, se diverso dall'ultimo
traffic_data
distance_meters = distanza dal punto di partenza lungo path_to_waypoint fino al punto di arrivo
eta = orario di arrivo stimato aggiornato
duration = durata della tratta di consegna

Con le corse consecutive e in pool condiviso, questo elenco potrebbe contenere tappe di altre corse da percorrere prima di questo percorso. Ad esempio, considera lo scenario in cui la corsa B viene assegnata allo stesso veicolo della corsa A. Il campo remaining_waypoints per la corsa A verrebbe 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 verrebbe compilato in modo simile, ma sarebbero presenti solo le prime tre voci, poiché il punto di arrivo della corsa A non fa parte del percorso della corsa B.