Recuperare i dati di viaggio direttamente da Fleet Engine

L'SDK per i consumatori offre una funzionalità pronta all'uso che consente alle app per consumatori di ridesharing di visualizzare la posizione e i progressi del veicolo nel loro percorso.

Alcuni fornitori di ridesharing, tuttavia, vogliono un maggiore controllo sull'esperienza del cliente finale con un'integrazione flessibile, pur sfruttando la posizione accurata e in tempo reale del veicolo, l'orario di arrivo stimato e il percorso di Google. Questa guida mostra come recuperare i dati delle corse direttamente da Fleet Engine, come alternativa all'utilizzo dell'SDK Consumer.

Panoramica

Per recuperare le informazioni sulla corsa direttamente da Fleet Engine, chiama il metodo GetTrip, specificando la vista JOURNEY_SHARING_V1S (RPC | REST).

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);

Nell'oggetto Trip (RPC | REST) risultante verranno completati i seguenti campi con le informazioni più recenti disponibili per il viaggio:

  • name
  • vehicle_id
  • trip_status
  • trip_type
  • number_of_passengers
  • pickup_point
  • actual_pickup_point
  • pickup_time
  • intermediate_destinations
  • intermediate_destinations_version
  • intermediate_destination_index
  • dropoff_point
  • actual_dropoff_point
  • dropoff_time
  • remaining_waypoints
  • last_location
  • view (== JOURNEY_SHARING_V1S)

Di solito, i fornitori di ridesharing chiedono al servizio di viaggio lo stato di ciascuna corsa ogni 2-5 secondi, mentre il viaggiatore monitora attivamente l'avanzamento del veicolo. Gli aggiornamenti sulla posizione dei veicoli sono in genere a intervalli più lunghi, ad esempio 10 secondi. Il campo Trip.last_location.update_time può essere monitorato per verificare se ci sono stati aggiornamenti dalla precedente chiamata a GetTrip.

Waypoint del viaggio

L'entità Trip contiene un campo ripetuto di tipo TripWaypoint (RPC | REST). Questo campo include tutti i waypoint che il veicolo dovrà percorrere, in ordine, prima del punto di partenza della corsa. Se specifichi la vista di condivisione del percorso, Fleet Engine inserisce informazioni aggiornate nel valore rimanente_waypoints[0] TripWaypoint. In altre visualizzazioni diverse dalla condivisione del percorso, quel waypoint di solito non riflette la posizione più recente del veicolo assegnato.

Ecco un esempio del campo remaining_waypoints del viaggio A:

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1° LatLng dal percorso rimanente al ritiro
2° LatLng dal percorso rimanente al ritiro
...
l'ultimo LatLng dal percorso di ritiro rimanente
pickup_point, se diverso dall'ultimo
traffic_data
distanza_meters = distanza dalla posizione del veicolo corrente lungo path_to_waypoint e prelievo
orario di arrivo stimato = 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 dalla gamba di consegna
2° LatLng dal tratto di dropoff
...
ultimo LatLng dalla fermata
dropoff_point, se diverso dall'ultimo
traffic_data
distanza_metri = distanza dal prelievo lungo path_to_waypoint fino alla consegna
orario di arrivo stimato = orario di arrivo stimato aggiornato
durata = durata tratto di abbandono

Con viaggi in sequenza e condivisi (carpool), questo elenco può contenere waypoint di altre corse che verranno attraversate durante questo viaggio. Ad esempio, considera 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 motivi di concisione, ma verrebbero compilati 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 partenza della corsa A non fa parte del percorso della corsa B.