Dans le cadre du service de trajets à la demande Mobility, vous pouvez trouver des véhicules à proximité à l'aide de la méthode SearchVehicles.
La méthode SearchVehicles vous permet de trouver dans votre application mobile grand public les véhicules disponibles à proximité qui conviennent le mieux à une course ou à une demande de livraison spécifique. L'API SearchVehicles renvoie une liste classée des véhicules dont les attributs correspondent à ceux du trajet demandé. Le classement est effectué en fonction de votre choix : heure d'arrivée prévue, distance ou distance en ligne droite depuis le point de prise en charge.
| Attributs de recherche | Attributs du véhicule |
|---|---|
|
|
Utiliser la méthode SearchVehicles
Pour utiliser SearchVehicles, suivez la procédure générale ci-dessous :
- Créez une
SearchVehiclesRequesten fonction du trajet à attribuer. - Appelez l'API
SearchVehicles(vehicleService.searchVehicles) avec la requête créée. - Traitez la
SearchVehicleResponserenvoyée par l'API.
Champs SearchVehiclesRequest
Utilisez les champs d'attributs obligatoires suivants pour créer une 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 trajet actif à la fois par chauffeur) ou SHARED (un ou plusieurs trajets à la fois par chauffeur). |
| minimum_capacity | Obligatoire. Capacité restante minimale du véhicule pour un nouveau trajet, pour les passagers ou les livraisons. |
| pickup_point | Obligatoire. Lieu de prise en charge du trajet en coordonnées de latitude/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 prise en charge. |
| order_by | Obligatoire. Triez les véhicules selon l'un des critères suivants :
|
| 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. |
| maximum_staleness | Facultatif. Limite la recherche aux véhicules qui ont envoyé des mises à jour de leur position à Fleet Engine au cours de la période spécifiée. Si ce champ n'est pas défini, le serveur utilise cinq minutes comme valeur par défaut. |
Consultez la documentation de référence pour obtenir la liste complète des SearchVehicleRequest.
Scénarios SearchVehiclesRequest
Cette section présente des exemples de création d'une SearchVehiclesRequest.
Supposons, par exemple, qu'un client souhaite être pris en charge au restaurant X et que vous disposez de quatre véhicules :
- Véhicule 1 : à 3 500 m du restaurant X.
- Véhicule 2 : à 100 m du restaurant X, avec un trajet actif avec prise en charge et dépose aux points A et B.
- Véhicule 3 : à 200 m du restaurant X, avec un point de dépose restant très éloigné.
- Véhicule 4 : à 1 000 m du restaurant X.
Les requêtes suivantes sont affichées par véhicule renvoyé.
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 SearchVehiclesResponse
Une SearchVehiclesResponse est constituée d'une liste d'entités VehicleMatch, classées selon l'attribut order_by spécifié dans la SearchVehiclesRequest. Chaque entité VehicleMatch comporte les champs suivants :
| Champ | Description |
|---|---|
| véhicule | Objet Vehicle, y compris les attributs vehicle_id et Vehicle. |
| vehicle_pickup_eta | Heure d'arrivée prévue du véhicule au lieu de prise en charge si ce trajet lui était attribué immédiatement. |
| 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 | Heure d'arrivée prévue du véhicule au lieu de dépose si ce trajet lui était attribué immédiatement. |
| 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 les ressources suivantes :
VehicleMatch message(gRPC)VehicleMatch resource(REST)
Utiliser des requêtes de filtre
SearchVehicles et ListVehicles acceptent le filtrage des attributs de véhicule à l'aide d'une requête de filtre.
Les requêtes de filtre ne sont compatibles qu'avec le filtrage des attributs personnalisés des véhicules et ne peuvent pas être utilisées pour d'autres champs. Lorsqu'elles sont utilisées 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 "accepte les animaux", vos critères ne renverront que les véhicules qui acceptent les 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 Mettre à jour les champs du véhicule.
Exemple SearchVehicles
L'exemple suivant montre comment utiliser l'API SearchVehicles à l'aide de la
bibliothèque Java gRPC. Pour obtenir la liste complète des langues disponibles, consultez la page
Bibliothèques clientes pour les services de trajets à la demande.
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.