Dans le cadre du service de trajets à la demande de Mobility, vous pouvez trouver des véhicules à proximité à l'aide de la méthode SearchVehicles
.
La méthode SearchVehicles
vous permet de trouver les véhicules disponibles à proximité dans votre application mobile grand public les plus adaptés à un trajet ou une demande de livraison spécifique. L'API SearchVehicles
renvoie une liste classée des véhicules dont les attributs correspondent aux attributs de trajet demandés. Le classement est établi en fonction de votre choix entre l'heure d'arrivée estimée, la distance ou la distance en ligne droite par rapport au point de retrait.
Attributs de recherche | Attributs du véhicule |
---|---|
|
|
Utiliser la méthode SearchVehicles
Pour utiliser SearchVehicles
, procédez comme suit:
- Créez un
SearchVehiclesRequest
en fonction du trajet à attribuer. - Appelez l'API
SearchVehicles
(vehicleService.searchVehicles
) avec la requête créée. - Traitez le
SearchVehicleResponse
renvoyé par l'API.
Champs SearchVehiclesRequest
Utilisez les champs d'attribut obligatoires suivants pour créer un SearchVehiclesRequest
:
Champ | Description |
---|---|
parent | Obligatoire. Doit être au format providers/{provider}. Le fournisseur doit être l'ID du projet Google Cloud dont le compte de service effectuant cet appel est membre. |
vehicle_types | Obligatoire. Types de véhicules demandés : AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE ou PEDESTRIAN. |
trip_types | Obligatoire. EXCLUSIVE (un seul trajet actif à la fois par conducteur) ou PARTAGÉ (un ou plusieurs trajets à la fois par conducteur). |
minimum_capacity | Obligatoire. Capacité restante minimale du véhicule pour un nouveau trajet, que ce soit pour des passagers ou des livraisons. |
pickup_point | Obligatoire. Lieu de prise en charge du trajet en coordonnées de latitude et de longitude. |
dropoff_point | Facultatif. Lieu de dépose du trajet en coordonnées de latitude/longitude. Le champ est obligatoire si trip_types contient TripType.SHARED. |
pickup_radius_meters | Obligatoire. Rayon (en mètres) de la zone de recherche de véhicules à partir du point de retrait. |
order_by | Obligatoire. Vous pouvez trier les véhicules par:
|
nombre | Obligatoire. Nombre maximal de véhicules à renvoyer (entre 1 et 50). |
Filtre | Facultatif. Requête de filtre à appliquer lors de la recherche de véhicules. |
Reportez-vous à la documentation de référence pour consulter l'ensemble des champs SearchVehicleRequest.
Scénarios SearchVehiclesRequest
Cette section présente des exemples de création d'un SearchVehiclesRequest
.
Par exemple, supposons qu'un client souhaite être pris en charge au RestaurantX et que vous disposiez de quatre véhicules:
- Véhicule 1: à 3 500 m du restaurant X.
- Véhicule 2: à 100 m du restaurant X, avec un trajet en cours avec des points de ramassage et de dépôt aux emplacements A et B.
- Véhicule 3: à 200 m du restaurant X, avec une livraison restante très éloignée.
- Véhicule 4: à 1 000 m du restaurant X.
La liste suivante affiche différentes requêtes par véhicule et les résultats qu'elles renvoient.
Renvoie le véhicule 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Renvoie les véhicules 3 et 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Renvoie les véhicules 2, 3 et 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
Champs de SearchVehiclesResponse
Une SearchVehiclesResponse
est constituée d'une liste d'entités VehicleMatch
, classées par l'attribut order_by spécifié dans la SearchVehiclesRequest
. Chaque entité VehicleMatch
comporte les champs suivants:
Champ | Description |
---|---|
véhicule | L'objet Vehicle , y compris les attributs vehicle_id et Vehicle . |
vehicle_pickup_eta | Heure d'arrivée prévue du véhicule au point de prise en charge du nouveau trajet. Il s'agit de l'heure d'arrivée estimée en voiture. |
vehicle_pickup_distance_meter | Distance en mètres entre le véhicule et le lieu de prise en charge du nouveau trajet. |
vehicle_pickup_straight_line_distance_meter | Distance en ligne droite (en mètres) entre le véhicule et le lieu de prise en charge du nouveau trajet. |
vehicle_dropoff_eta | Code temporel de l'heure d'arrivée prévue du véhicule au lieu de prise en charge du nouveau trajet. Notez que l'heure d'arrivée prévue est l'heure d'arrivée prévue en conduisant. |
vehicle_trips_waypoints | Liste des points de repère restants, y compris les points de prise en charge et de dépose, pour les trajets actifs actuellement attribués au véhicule. |
vehicle_match_type | Type de trajet du véhicule : EXCLUSIVE, BACK_TO_BACK, CARPOOL ou CARPOOL_BACK_TO_BACK. |
Pour obtenir la liste complète des champs VehicleMatch
, consultez:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
Utiliser des requêtes de filtrage
SearchVehicles
et ListVehicles
acceptent le filtrage des attributs du véhicule à l'aide d'une requête de filtrage.
Les requêtes de filtrage ne permettent de filtrer que sur les attributs personnalisés des véhicules et ne peuvent pas être utilisées pour d'autres champs. Lorsqu'elle est utilisée dans une recherche qui inclut d'autres critères de champ, tels que minimum_capacity
ou vehicle_types
, la requête de filtre fonctionne comme une clause AND
.
Par exemple, si vous recherchez un véhicule d'une capacité minimale de six personnes et que vous filtrez un attributes
tel que "animaux acceptés", vos critères n'afficheront que les véhicules qui sont à la fois adaptés aux animaux et peuvent transporter au moins six passagers.
Pour connaître la syntaxe des requêtes de filtre, consultez AIP-160 pour obtenir des exemples. Pour en savoir plus sur la création d'attributs de véhicule, consultez le champ Attributs du véhicule dans le guide Modifier les champs du véhicule.
Exemple SearchVehicles
L'exemple suivant montre comment utiliser l'API SearchVehicles
à l'aide de la bibliothèque gRPC 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.