Como parte do serviço de viagens sob demanda de mobilidade, é possível encontrar veículos por perto
usando o método SearchVehicles
.
O método SearchVehicles
permite encontrar veículos disponíveis nas proximidades no seu app para dispositivos móveis que são mais adequados para uma corrida específica ou uma solicitação de entrega. A API SearchVehicles
retorna uma lista classificada de veículos cujos atributos correspondem aos atributos de viagem solicitados. A classificação é ordenada pelo seu
escolha entre HEC, distância ou distância em linha reta a partir do ponto de embarque.
Pesquisar atributos | Atributos do veículo |
---|---|
|
|
Usar o método SearchVehicles
Para usar SearchVehicles
, siga este processo geral:
- Crie um
SearchVehiclesRequest
com base na viagem que será atribuída. - Chame a API
SearchVehicles
(vehicleService.searchVehicles
) com o solicitação construída. - Processe o
SearchVehicleResponse
retornado pela API.
Campos SearchVehiclesRequest
Use os seguintes campos de atributo 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 do Google Cloud em que a conta de serviço que faz a 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 mínima restante 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 destino 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 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 a serem retornados, de 1 a 50. |
Filtro | Opcional. Uma consulta de filtro para aplicar ao pesquisar veículos. |
Consulte a documentação de referência para ver o conjunto completo de Campos SearchVehicleRequest.
Cenários de SearchVehiclesRequests
Esta seção mostra exemplos de como criar uma SearchVehiclesRequest
.
Por exemplo, suponha que um cliente queira ser retirado no RestaurantX, e quatro veículos:
- Veículo 1: a 3.500 m do RestaurantX.
- Veículo 2: a 100 metros do RestaurantX com uma viagem ativa com embarque e desembarque nos locais A e B.
- Veículo 3: a 200 m do Restaurante X com uma entrega restante muito longe.
- Veículo 4: a 1.000 m do RestaurantX.
Confira abaixo várias solicitações de acordo com o veículo retornado.
Devolve o veículo 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Devolve os veículos 3 e 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Devolve 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 os atributos de ID do veículo e Vehicle . |
vehicle_pickup_eta | HEC do veículo no local de embarque da nova viagem. Este é o tempo estimado de chegada de carro. |
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 carimbo de data/hora do HEC do veículo no local de retirada da nova viagem. O HEC é o HEC de direção. |
vehicle_trips_waypoints | Uma lista dos waypoints restantes, incluindo os 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. |
Para conferir uma lista completa dos campos VehicleMatch
, consulte:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
Usar consultas com filtro
SearchVehicles
e ListVehicles
são compatíveis com a filtragem de atributos do veículo
usando uma consulta de filtro.
As consultas com filtro oferecem suporte APENAS à filtragem em atributos personalizados para veículos.
não pode ser usado para outros campos. Quando usado 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 pessoas 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 conferir exemplos. Para detalhes sobre a criação de atributos do veículo, consulte Veículo atributos no guia Atualizar campos do veículo.
Exemplo de SearchVehicles
O exemplo a seguir mostra como usar a API SearchVehicles
com a
biblioteca gRPC do Java.
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.