Recupera datos de viajes directamente desde Fleet Engine

En esta guía, se muestra cómo recuperar datos de viajes directamente desde Fleet Engine, como una alternativa al uso del SDK para consumidores. Puedes usar este enfoque para tener más control sobre la experiencia del usuario final y, al mismo tiempo, aprovechar la ubicación, la hora de llegada estimada y la planificación de ruta precisas y en tiempo real de Fleet Engine.

Para obtener más información sobre el uso del SDK para consumidores, consulta Cómo compartir viajes para viajes a pedido.

Cómo recuperar información de viajes

Para recuperar información de viajes directamente desde Fleet Engine, llama al método GetTrip y especifica la vista JOURNEY_SHARING_V1S. Consulta la referencia de RPC o REST.

Por lo general, tu servidor sondea el servicio de viaje para obtener el estado de cada viaje mientras el pasajero supervisa activamente el progreso del vehículo. Por lo general, las actualizaciones de la ubicación del vehículo se producen cada 10 segundos, y el sistema debe sondear a la misma velocidad. Se puede supervisar el campo Trip.last_location.update_time para ver si hubo actualizaciones desde la llamada anterior 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);

El objeto Trip resultante tiene los siguientes campos propagados con la información más reciente disponible para el viaje:

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

Cómo recuperar los puntos de ruta restantes del viaje

La entidad Trip contiene un campo repetido de tipo TripWaypoint. Este campo incluye todos los puntos de referencia que el vehículo deberá recorrer, en orden, antes del punto de destino final de este viaje. Especificar la vista de uso compartido de viajes le indica a Fleet Engine que coloque información actualizada en remaining_waypoints[0] TripWaypoint. En otras vistas que no son de Compartir viaje, ese punto de referencia no suele reflejar la posición más reciente del vehículo asignado. Consulta la referencia de RPC o REST.

Para obtener más información, consulta Estado del viaje y puntos de referencia restantes del vehículo en la guía Introducción a los viajes.

Este es un ejemplo del campo remaining_waypoints para un viaje, el viaje A:

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1ª LatLng de la ruta restante hasta el punto de partida
2ª LatLng de la ruta restante hasta el punto de partida
último LatLng de la ruta restante hasta la ubicación de retiro
pickup_point, si es diferente del último
traffic_data
distance_meters = distancia desde la ubicación actual del vehículo (vehicle_location) a lo largo de la ruta (path_to_waypoint) hasta el punto de partida
eta = hora de llegada estimada actualizada
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 de la etapa de destino
Segundo LatLng de la etapa de destino
último LatLng del tramo de destino
dropoff_point, si es diferente del último
traffic_data
distance_meters = distancia desde el punto de partida a lo largo de path_to_waypoint hasta el destino
eta = hora de llegada estimada actualizada
duration = duración de la etapa de entrega

En el caso de los viajes compartidos y consecutivos, esta lista puede contener puntos de referencia de otros viajes que se recorrerán antes de este viaje. Por ejemplo, considera la situación en la que el viaje B se asigna al mismo vehículo que el viaje A. Luego, el campo remaining_waypoints para el viaje A se propagaría de la siguiente manera. Se omitieron la mayoría de los campos para que sea más conciso, pero se propagarían de acuerdo con el ejemplo anterior.

[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

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