Como parte de sua solução de viagens e entregas sob demanda, o programa de planejamento e despacho de rotas
permite que você encontre motoristas por perto fornecendo uma API SearchVehicles
.
A API SearchVehicles
permite encontrar motoristas nas proximidades disponíveis na sua
Aplicativo para o consumidor das soluções de viagens e entregas sob demanda mais adequado para uma tarefa
como uma viagem ou um pedido de entrega. A API SearchVehicles
retorna
uma lista de classificação de motoristas que correspondem aos atributos da tarefa
dos veículos da sua frota.
Os atributos de tarefa podem incluir:
- Locais de embarque e desembarque
- Tipos de veículo e viagem solicitados
- Capacidade exigida
- Outros atributos de correspondência obrigatórios
Os atributos do veículo podem incluir:
- a última localização conhecida de um veículo
- O estado, o tipo ou a capacidade do veículo
- Outros atributos personalizados
A classificação é ordenada por HEC, distância ou linha reta distância do ponto de embarque.
Você precisa ter o superusuário do serviço do Fleet Engine ou o usuário do SDK do consumidor
privilégios para usar a API SearchVehicles
. Para mais informações, consulte
Autenticação e autorização.
Como usar a API SearchVehicles
Para usar a API SearchVehicles
:
- Crie um
SearchVehiclesRequest
com base na tarefa a ser atribuída. - Chamar a API
SearchVehicles
(vehicleService.searchVehicles
) à solicitação construída. - Processe o
SearchVehicleResponse
retornado da API.
Campos SearchVehiclesRequest
Use os seguintes campos de atributos obrigatórios para criar um
SearchVehiclesRequest
:
Campo | Descrição |
---|---|
primária | Obrigatório. Precisa estar no formato provedores/{provider}. O provedor precisa ser o ID do projeto (por exemplo, sample-cloud-project) do projeto do Google Cloud de que a conta de serviço que faz a chamada faz parte. |
vehicle_types | Obrigatório. Tipos de veículos solicitados: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE ou PEDESTRIAN. |
trip_types | Obrigatório. EXCLUSIVE (uma viagem ativa por vez por motorista) ou SHARED (uma ou várias viagens por vez por motorista). |
minimum_capacity | Obrigatório. Capacidade mínima restante do veículo para uma nova tarefa, seja para passageiros ou entregas. |
pickup_point | Obrigatório. O local de partida da tarefa em coordenadas de latitude/longitude. |
dropoff_point | Opcional. O local de chegada da tarefa em coordenadas de latitude/longitude. O campo é obrigatório se trip_types contiver TripType.SHARED. |
pickup_radius_meters | Obrigatório. O raio em metros da área de pesquisa do veículo a partir do ponto de embarque. |
order_by | Obrigatório. Ordene os veículos de uma das seguintes maneiras:
|
contagem | Obrigatório. O número máximo de veículos para retornar, de 1 a 50. |
Consulte a documentação de referência para ver o conjunto completo de SearchVehicleRequestfields.
Exemplos de SearchVehiclesRequest
Esta seção mostra exemplos de como criar um SearchVehiclesRequest
.
Por exemplo, suponha que você tenha uma tarefa de retirada a ser atribuída no restaurante X e quatro veículos:
- Veículo 1, que fica a 3.500 m de distância do RestaurantX.
- Veículo 2, que fica a 100 m de distância do RestaurantX e tem uma viagem ativa com embarque e desembarque nos locais A e B.
- Veículo 3, que fica a 200 m de distância do RestaurantX e tem uma queda restante muito longe.
- Veículo 4, que fica a 1.000 m do RestaurantX.
O SearchVehiclesRequest
a seguir retorna o veículo 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
O SearchVehiclesRequest
a seguir retorna os Veículos 3 e 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
O SearchVehiclesRequest
a seguir retorna os Veículos 2, 3 e 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
Campos SearchVehiclesResponse
Um SearchVehiclesResponse
consiste em uma lista de entidades VehicleMatch
,
classificado pelo atributo order_by especificado no SearchVehiclesRequest
.
Cada entidade VehicleMatch
tem os seguintes campos:
Campo | Descrição |
---|---|
veículo | O objeto Vehicle , incluindo os atributos de ID do veículo e Vehicle . |
vehicle_pickup_eta | O HEC do veículo no local de embarque da nova tarefa. Este é o HEC de dDriving. |
vehicle_pickup_distance_meter | A distância em metros entre o veículo e o local de embarque da nova tarefa. |
vehicle_pickup_straight_line_distance_meter | A distância em linha reta em metros entre o veículo e o local de embarque da nova tarefa. |
vehicle_dropoff_eta | O carimbo de data/hora do HEC do veículo no local de embarque da nova tarefa. O HEC é de dDriving. |
vehicle_trips_waypoints | Uma lista de waypoints restantes, incluindo pontos de embarque e desembarque, das viagens ativas atualmente atribuídas ao veículo. |
vehicle_match_type | O tipo de viagem do veículo (EXCLUSIVE, BACK_TO_BACK, CARPOOL ou CARPOOL_BACK_TO_BACK). |
Exemplo de SearchVehicles
O exemplo a seguir mostra como usar a API SearchVehicles
:
static final String PROJECT_ID = "project-id";
VehicleServiceBlockingStub vehicleService =
VehicleService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
SearchVehiclesRequest searchVehiclesRequest = SearchVehiclesRequest.newBuilder()
.setParent(parent)
.setPickupPoint( // Grand Indonesia East Mall
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setDropoffPoint( // Balai Sidang Jkt Convention Center
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.213796).setLongitude(106.807195)))
.setPickupRadiusMeters(2000)
.setCount(10)
.setMinimumCapacity(2)
.addTripTypes(TripType.EXCLUSIVE)
.addVehicleTypes(VehicleType.newBuilder().setCategory(Category.AUTO).build())
.setCurrentTripsPresent(CurrentTripsPresent.ANY)
.setFilter("attributes.on_trip=\"false\"")
.setOrderBy(VehicleMatchOrder.PICKUP_POINT_ETA)
.build();
try {
SearchVehiclesResponse searchVehiclesResponse =
vehicleService.searchVehicles(searchVehiclesRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
List<VehicleMatch> vehicleMatches =
searchVehicleResponse.getMatchesList();
// Each VehicleMatch contains a Vehicle entity and information about the
// distance and ETA to the pickup point and drop-off point.