Recuperar dados de viagens diretamente do Fleet Engine

Neste guia, mostramos como recuperar dados de viagem diretamente do Fleet Engine, como uma alternativa ao uso do SDK do consumidor. Você pode usar essa abordagem para ter mais controle sobre a experiência do usuário final, aproveitando a localização, o tempo estimado de chegada e o roteamento precisos e em tempo real do Fleet Engine.

Para saber mais sobre o uso do SDK do consumidor, consulte Compartilhar trajetos para viagens sob demanda.

Recuperar informações da viagem

Para extrair informações de viagens diretamente do Fleet Engine, chame o método GetTrip, especificando a visualização JOURNEY_SHARING_V1S. Consulte a referência para RPC ou REST.

Normalmente, o servidor consulta o serviço de viagem para saber o status de cada viagem enquanto o passageiro monitora ativamente o progresso do veículo. As atualizações de localização do veículo geralmente ocorrem a cada 10 segundos, e seu sistema precisa fazer a pesquisa nessa mesma taxa. O campo Trip.last_location.update_time pode ser monitorado para saber se houve atualizações desde a chamada anterior para 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);

O objeto Trip resultante tem os seguintes campos preenchidos com as informações mais recentes disponíveis para a viagem:

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

Recuperar os pontos de passagem restantes da viagem

A entidade "Viagem" contém um campo repetido do tipo TripWaypoint. Esse campo inclui todos os waypoints que o veículo precisará percorrer, em ordem, antes do ponto final da viagem. Especificar a visualização "Compartilhamento de trajeto" informa ao Fleet Engine para colocar informações atualizadas em remaining_waypoints[0] TripWaypoint. Em outras visualizações que não são do compartilhamento da jornada, esse waypoint geralmente não reflete a posição mais recente do veículo atribuído. Consulte a referência de RPC ou REST.

Para mais informações, consulte Status da viagem e pontos de passagem restantes do veículo no guia Introdução às viagens.

Veja um exemplo do campo remaining_waypoints para uma viagem, "Viagem A":

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1a LatLng do caminho restante até o embarque
2ª LatLng do caminho restante até a retirada
último LatLng do caminho restante até a retirada
pickup_point, se for diferente do último
traffic_data
distance_meters = distância do local atual do veículo ao longo de path_to_waypoint até a coleta
eta = ETA atualizada
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 do trecho de entrega
2a LatLng da etapa de desembarque
último LatLng do trecho de entrega
dropoff_point, se for diferente do último
traffic_data
distance_meters = distância do ponto de retirada ao longo de path_to_waypoint até o ponto de entrega
eta = ETA atualizada
duration = duração da etapa de entrega

Com viagens sucessivas e compartilhadas em pool, essa lista pode conter waypoints de outras viagens a serem percorridas antes dessa jornada. Por exemplo, considere o cenário em que a Viagem B é atribuída ao mesmo veículo que a Viagem A. O campo remaining_waypoints da Viagem A seria preenchido da seguinte maneira. A maioria dos campos foi omitida para fins de concisão, mas seria preenchida de forma consistente com o exemplo 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

O campo remaining_waypoint da viagem B seria preenchido de maneira semelhante, mas apenas as três primeiras entradas estariam presentes, já que o ponto de desembarque da viagem A não faz parte do trajeto da viagem B.