Como parte do serviço de viagens sob demanda do Mobility, você pode encontrar veículos próximos usando o método SearchVehicles.
O método SearchVehicles permite encontrar veículos disponíveis nas proximidades no app para dispositivos móveis do consumidor que sejam mais adequados para uma viagem ou um pedido de entrega específico. A API SearchVehicles retorna uma lista classificada de veículos cujos atributos correspondem aos atributos de viagem solicitados. A classificação é ordenada pela sua escolha de tempo estimado de chegada, distância ou distância em linha reta do ponto de embarque.
| Atributos de pesquisa | Atributos do veículo |
|---|---|
|
|
Usar o método SearchVehicles
Para usar SearchVehicles, siga este processo geral:
- Crie um
SearchVehiclesRequestcom base na viagem a ser atribuída. - Chame a API
SearchVehicles(vehicleService.searchVehicles) com a solicitação criada. - Processe o
SearchVehicleResponseretornado 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 providers/{provider}. O provedor precisa ser o ID do projeto do Google Cloud em que a conta de serviço que faz essa chamada é membro. |
| 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. A capacidade restante mínima do veículo para uma nova viagem, seja para passageiros ou entregas. |
| pickup_point | Obrigatório. O local de embarque da viagem em coordenadas de latitude/longitude. |
| dropoff_point | Opcional. O local de desembarque da viagem 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 de veículos do ponto de embarque. |
| order_by | Obrigatório. Ordene os veículos por um dos seguintes:
|
| contagem | Obrigatório. O número máximo de veículos a serem retornados, de 1 a 50. |
| filtrar | Opcional. Uma consulta de filtro a ser aplicada ao pesquisar veículos. |
| maximum_staleness | Opcional. Restringe a pesquisa apenas aos veículos que enviaram atualizações de localização para o Fleet Engine dentro da duração especificada. Se este campo não estiver definido, o servidor usará cinco minutos como valor padrão. |
Consulte a documentação de referência para conferir o conjunto completo de SearchVehicleRequest.
Cenários SearchVehiclesRequest
Esta seção mostra exemplos de como criar um SearchVehiclesRequest.
Por exemplo, suponha que um cliente queira ser buscado no RestauranteX e você tenha quatro veículos:
- Veículo 1: a 3.500 metros do RestauranteX.
- Veículo 2: a 100 metros do RestauranteX com uma viagem ativa com retirada e desembarque nos locais A e B.
- Veículo 3: a 200 metros do RestauranteX com um desembarque restante muito distante.
- Veículo 4: a 1.000 metros do RestauranteX.
A seguir, mostramos várias solicitações pelo veículo que elas retornam.
Retorna o veículo 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Retorna os veículos 3 e 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
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, classificadas pelo atributo order_by especificado no SearchVehiclesRequest. Cada entidade VehicleMatch tem os seguintes campos:
| Campo | Descrição |
|---|---|
| veículo | O objeto Vehicle, incluindo o vehicle_id e os atributos Vehicle. |
| vehicle_pickup_eta | O tempo estimado de chegada do veículo no local de embarque se essa viagem fosse atribuída ao veículo agora. |
| vehicle_pickup_distance_meter | A distância em metros entre o veículo e o local de embarque da nova viagem. |
| vehicle_pickup_straight_line_distance_meter | A distância em linha reta em metros entre o veículo e o local de retirada da nova viagem. |
| vehicle_dropoff_eta | O tempo estimado de chegada do veículo no local de desembarque se essa viagem fosse atribuída ao veículo agora. |
| vehicle_trips_waypoints | Uma lista de waypoints restantes, incluindo pontos de retirada e desembarque, para as viagens ativas 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. |
Para conferir uma lista completa de campos VehicleMatch, consulte:
VehicleMatch message(gRPC)VehicleMatch resource(REST)
Usar consultas de filtro
SearchVehicles e ListVehicles oferecem suporte à filtragem de atributos de veículos usando uma consulta de filtro.
As consultas de filtro oferecem suporte APENAS à filtragem de atributos personalizados para veículos e não podem ser usadas para outros campos. Quando usadas em uma pesquisa que inclui outros critérios de campo, como minimum_capacity ou vehicle_types, a consulta de filtro funciona como uma cláusula AND.
Por exemplo, se você pesquisar um veículo com capacidade mínima de 6 e filtrar um attributes, como aceita animais de estimação, seus critérios vão retornar apenas os veículos que aceitam animais de estimação e podem transportar pelo menos 6 passageiros.
Para a sintaxe de consulta de filtro, consulte AIP-160 para exemplos. Para detalhes sobre como criar atributos de veículo, consulte o campo Atributos do veículo no guia Atualizar campos do veículo.
Exemplo de SearchVehicles
O exemplo a seguir mostra como usar a SearchVehicles API usando a
biblioteca Java gRPC. Para conferir uma lista completa de idiomas com suporte, consulte
Bibliotecas de cliente para serviços de viagens sob demanda.
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.