Recupere dados de viagens diretamente da frota do motor

O SDK do Consumer oferece um recurso pronto para uso em apps de compartilhamento de viagens para consumidores que mostram o local e o andamento do veículo que o leva na jornada.

No entanto, alguns provedores de serviço de transporte por aplicativo querem mais controle sobre a experiência do usuário final com uma integração flexível e, ao mesmo tempo, aproveitam a localização do veículo, o HEC e o trajeto precisos e em tempo real do Google. Este guia mostra como recuperar dados de viagens diretamente do Fleet Engine, como uma alternativa ao uso do SDK do consumidor.

Visão geral

Para recuperar informações de viagem diretamente do Fleet Engine, chame o método GetTrip, especificando a visualização 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);

O objeto Viagem resultante (RPC | REST) terá os seguintes campos preenchidos com as informações mais recentes disponíveis para a viagem:

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

Os provedores de serviço de transporte por aplicativo normalmente consultam o status de cada viagem a cada dois a cinco segundos, enquanto o passageiro monitora ativamente o andamento do veículo. As atualizações de localização de veículos geralmente têm um intervalo maior, como 10 segundos. O campo Trip.last_location.update_time pode ser monitorado para verificar se houve alguma atualização desde a chamada anterior para GetTrip.

Pontos de referência da viagem

A entidade "Trip" contém um campo repetido do tipo TripWaypoint (RPC | REST). Esse campo inclui todos os waypoints que o veículo precisará percorrer, em ordem, antes do último ponto de desembarque da viagem. A especificação da visualização "Compartilhamento de jornada" instrui o Fleet Engine a colocar informações atualizadas no TripWaypoint restante_waypoints[0]. Em outras visualizações que não são de compartilhamento de jornada, esse waypoint geralmente não reflete a posição mais recente do veículo atribuído.

Veja um exemplo do campo remaining_waypoints da 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é a retirada
2a LatLng do caminho restante até o embarque
...
última LatLng do caminho restante para o embarque
pickup_point, se for diferente do último
traffic_data
distância_metros = distância do local do veículo atual ao longo de path_to_waypoint até o embarque
eta = HEC atualizado
duração = duração atualizada
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1a LatLng do trecho de chegada
2a LatLng do trecho de desembarque
...
última LatLng do trecho de chegada
dropoff_point, se for diferente do último
traffic_data
distance_meters = distância do embarque ao longo path_to_waypoint até o desembarque
eta = HEC atualizado
duração = duração do trecho de chegada

Nas viagens de ida e volta ou compartilhadas (carona), essa lista pode conter waypoints de outras viagens que serão percorridas durante a viagem. 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 concisão, mas seria preenchido de acordo 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.