Recupera datos de viajes directamente desde Fleet Engine

El SDK de consumidores proporciona una función lista para usar que permiten que las apps de consumo de transporte compartido muestren la ubicación y el progreso del vehículo que las lleva en su viaje.

Sin embargo, algunos proveedores de transporte compartido desean tener más control sobre la experiencia del cliente para sus usuarios finales con una integración flexible y, al mismo tiempo, aprovechar la ubicación precisa y en tiempo real de los vehículos, la hora de llegada estimada y la ruta de Google. En esta guía, se muestra cómo recuperar datos de viajes directamente desde Fleet Engine, como alternativa al uso del SDK para consumidores.

Descripción general

Para recuperar información de viajes de Fleet Engine directamente, llama al método GetTrip y especifica la vista JURNEY_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);

El objeto de viaje resultante (RPC | REST) tendrá los siguientes campos completados con la información más reciente disponible para el viaje:

  • 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 (== JURNEY_SHARING_V1S)

Los proveedores de transporte compartido suelen consultar el servicio de viajes para conocer el estado de cada viaje cada dos a cinco segundos mientras el pasajero supervisa de forma activa el progreso del vehículo. Por lo general, las actualizaciones de la ubicación del vehículo se realizan en intervalos más largos, por ejemplo, de 10 segundos. El campo Trip.last_location.update_time se puede supervisar para ver si hubo actualizaciones desde la llamada anterior a GetTrip.

Puntos de referencia del viaje

La entidad de viaje contiene un campo repetido de tipo TripWaypoint (RPC | REST). Este campo incluye todos los puntos de referencia que el vehículo deberá recorrer, en orden, antes del último punto de llegada del viaje. Cuando especificas la vista de uso compartido del recorrido, se le indica a Fleet Engine que coloque información actualizada en el resto de los puntos de referencia[0] TripWaypoint. En otras vistas que no son de uso compartido de viajes, ese punto de referencia no suele reflejar la última posición del vehículo asignado.

A continuación, se muestra un ejemplo del campo remaining_waypoints del viaje A:

[0] location.point = trip.pickup_point.point
trip_id = "viaje_A"
Waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1a LatLng desde la ruta restante hasta el punto de partida
2a clase LatLng desde la ruta restante hasta el lugar de partida
...
última LatLng desde la ruta restante hasta el lugar de partida
punto_retiro, si es diferente del último
traffic_data
distancia_meters = distancia desde la ubicación del vehículo actual por path_to_waypoint hasta el lugar de partida
eta = hora de llegada estimada
duración = duración actualizada
[1] location.point = trip.dropoff_point.point
trip_id = "viaje_A"
Waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1a LatLng desde el tramo de destino
2a clase LatLng desde el tramo de destino
...
última LatLng del tramo de destino
dropoff_point, si es diferente del último
traffic_data
distancia_meters = distancia desde el punto de partida en path_to_waypoint hasta el destino
eta = hora de llegada estimada
duración = duración del tramo de destino

Con los viajes consecutivos y compartidos (de uso compartido), esta lista puede contener puntos de referencia de otros viajes que se recorrerán durante este viaje. Por ejemplo, considera la situación en la que el Viaje B está asignado al mismo vehículo que el Viaje A. El campo remaining_waypoints del viaje A se propagaría de la siguiente manera. (La mayoría de los campos se omitieron para mayor concisión, pero se propagarán de manera coherente con el ejemplo anterior).

[0] trip_id = "viaje_A"
Waypoint_type = PICKUP_WAYPOINT_TYPE
[1] trip_id = "viaje_B"
Waypoint_type = PICKUP_WAYPOINT_TYPE
[2] trip_id = "viaje_B"
Waypoint_type = DROP_OFF_WAYPOINT_TYPE
[3] trip_id = "viaje_A"
Waypoint_type = DROP_OFF_WAYPOINT_TYPE

El campo remaining_waypoint del viaje B se propagaría de manera similar, pero solo estarán presentes las primeras tres entradas, ya que el punto de destino del viaje A no forma parte de la ruta del viaje B.