Como parte del servicio de viajes a pedido de movilidad, puedes buscar vehículos cercanos
con el método SearchVehicles
El método SearchVehicles
te permite encontrar vehículos cercanos disponibles en tu
aplicación para dispositivos móviles para consumidores que se adapta mejor a un viaje específico o a una entrega
para cada solicitud. La API de SearchVehicles
muestra una lista clasificada de vehículos cuyos
coinciden con los atributos de viaje solicitados. La clasificación se ordena por tu
elegir entre la hora de llegada estimada, la distancia o la distancia en línea recta desde el punto de partida.
Atributos de búsqueda | Atributos del vehículo |
---|---|
|
|
Usa el método SearchVehicles
Para usar SearchVehicles
, sigue este proceso general:
- Crea un
SearchVehiclesRequest
basado en el viaje que se asignará. - Llama a la API de
SearchVehicles
(vehicleService.searchVehicles
) con la solicitud que se compiló. - Procesa el
SearchVehicleResponse
que muestra la API.
Campos de SearchVehiclesRequest
Usa los siguientes campos de atributos obligatorios para crear un SearchVehiclesRequest
:
Campo | Descripción |
---|---|
elemento superior | Obligatorio. Debe estar en el formato providers/{provider}. El proveedor debe ser el ID del proyecto de Google Cloud del que es miembro la cuenta de servicio que realiza esta llamada. |
vehicle_types | Obligatorio. Son los tipos de vehículos solicitados, ya sea AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE o PEDESTRIAN. |
trip_types | Obligatorio. Puede ser EXCLUSIVO (un viaje activo a la vez por conductor) o COMPARTIDO (uno o varios viajes a la vez por conductor). |
minimum_capacity | Obligatorio. Es la capacidad mínima restante del vehículo para un viaje nuevo, ya sea para pasajeros o entregas. |
pickup_point | Obligatorio. Es la ubicación de partida del viaje en coordenadas de latitud y longitud. |
dropoff_point | Opcional. La ubicación de destino del viaje en coordenadas de latitud y longitud El campo es obligatorio si trip_types contiene TripType.SHARED. |
pickup_radius_meters | Obligatorio. El radio en metros del área de búsqueda del vehículo desde el punto de partida. |
order_by | Obligatorio. Ordena los vehículos de una de las siguientes maneras:
|
count | Obligatorio. La cantidad máxima de vehículos que se deben devolver de 1 a 50. |
Filtro | Opcional. Una búsqueda de filtro para aplicar cuando se busquen vehículos. |
Consulta la documentación de referencia para ver el conjunto completo SearchVehicleRequest.
Situaciones de SearchVehiclesRequest
En esta sección, se muestran ejemplos de cómo construir un SearchVehiclesRequest
.
Por ejemplo, supongamos que un cliente desea que lo retiren en Restaurant X, y tienes cuatro vehículos:
- Vehículo 1: A 3,500 m de distancia de RestaurantX
- Vehículo 2: A 100 m del restaurante X, con un viaje activo con partida y destino en las ubicaciones A y B.
- Vehículo 3: A 200 m de RestaurantX, con un viaje restante muy lejos.
- Vehículo 4: A 1,000 m de RestaurantX.
A continuación, se muestran varias solicitudes según el vehículo que devuelven.
Muestra el vehículo 4.
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Devoluciones de los vehículos 3 y 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Muestra los vehículos 2, 3 y 4.
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
Campos SearchVehiclesResponse
Un SearchVehiclesResponse
consiste en una lista de entidades VehicleMatch
, clasificadas
por el atributo order_by especificado en SearchVehiclesRequest
Cada entidad VehicleMatch
tiene los siguientes campos:
Campo | Descripción |
---|---|
vehículo | El objeto Vehicle , incluidos los atributos id_vehículo y Vehicle |
vehicle_pickup_eta | La hora de llegada estimada del vehículo en el punto de partida del nuevo viaje. Esta es la hora de llegada estimada conduciendo. |
vehicle_pickup_distance_meter | Es la distancia en metros entre el vehículo y la ubicación de partida del viaje nuevo. |
vehicle_pickup_straight_line_distance_meter | Es la distancia en línea recta en metros entre el vehículo y la ubicación de partida del viaje nuevo. |
vehicle_dropoff_eta | La marca de tiempo de la hora de llegada estimada del vehículo en el punto de partida del nuevo viaje. Ten en cuenta que la hora de llegada estimada es la hora de llegada estimada en automóvil. |
vehicle_trips_waypoints | Es una lista de los puntos de referencia restantes, incluidos los puntos de partida y destino, de los viajes activos asignados actualmente al vehículo. |
vehicle_match_type | El tipo de viaje del vehículo, ya sea EXCLUSIVE, BACK_TO_BACK, CARPOOL o CARPOOL_BACK_TO_BACK. |
Para obtener una lista completa de los campos VehicleMatch
, consulta lo siguiente:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
Usa consultas de filtro
SearchVehicles
y ListVehicles
admiten el filtrado de atributos de vehículos
con una consulta de filtro.
Las consultas de filtro SOLO admiten el filtrado de atributos personalizados para vehículos y no se pueden usar para otros campos. Cuando se usa en una búsqueda que incluye otros criterios de campo, como minimum_capacity
o vehicle_types
, la consulta de filtro funciona como una cláusula AND
.
Por ejemplo, si buscas un vehículo que tenga una capacidad mínima de 6 y filtras un attributes
, como apto para mascotas, tus criterios solo mostrarán aquellos vehículos que sean aptos para mascotas y que puedan transportar al menos 6 pasajeros.
Para ver ejemplos de la sintaxis de la consulta de filtro, consulta AIP-160. Para obtener detalles sobre cómo crear atributos de vehículos, consulta Vehículos atributos de la guía Actualiza los campos de vehículos.
Ejemplo de SearchVehicles
En el siguiente ejemplo, se muestra cómo usar la API de SearchVehicles
con la biblioteca de gRPC de 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.