Rechercher des véhicules

Dans le cadre du service de déplacement à la demande, 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 destinée aux consommateurs, qui sont les mieux adaptés à 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 basé sur votre choix : soit l'heure d'arrivée estimée, soit la distance, soit la distance en ligne droite depuis le point de prise en charge.

Attributs de recherche Attributs du véhicule
  • Lieux de prise en charge et de dépose
  • Types de véhicules et de trajets demandés
  • Capacité requise
  • Autres attributs de mise en correspondance requis
  • la dernière position connue d'un véhicule ;
  • État, type ou capacité du véhicule
  • Autres attributs personnalisés

Utiliser la méthode SearchVehicles

Pour utiliser SearchVehicles, suivez cette procédure générale :

  1. Créez un SearchVehiclesRequest en fonction du trajet à attribuer.
  2. Appelez l'API SearchVehicles (vehicleService.searchVehicles) avec la requête construite.
  3. Traitez le SearchVehicleResponse renvoyé par l'API.

Champs SearchVehiclesRequest

Utilisez les champs d'attributs 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 à l'origine de 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, que ce soit pour des passagers ou des 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. Ce 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 :
  • PICKUP_POINT_ETA, l'heure d'arrivée estimée du véhicule au point de prise en charge.
  • PICKUP_POINT_DISTANCE : distance entre le véhicule et le point de prise en charge.
  • DROPOFF_POINT_ETA : heure d'arrivée estimée du véhicule au point de dépose.
  • PICKUP_POINT_STRAIGHT_DISTANCE : distance en ligne droite (hors itinéraire) entre le véhicule et le point de prise en charge.
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 voir l'ensemble des champs SearchVehicleRequest.

Scénarios SearchVehiclesRequest

Cette section montre des exemples de construction d'un SearchVehiclesRequest.

Par exemple, supposons qu'un client souhaite être récupéré au RestaurantX et que vous disposez de quatre véhicules :

  • Véhicule 1 : à 3 500 m du RestaurantX.
  • Véhicule 2 : à 100 mètres du RestaurantX, en course avec une prise en charge et une dépose aux points A et B.
  • Véhicule 3 : à 200 mètres du RestaurantX, avec une dernière dépose très éloignée.
  • Véhicule 4 : à 1 000 m du RestaurantX.

Les requêtes suivantes sont affichées par véhicule auquel elles sont renvoyées.

Returns Vehicle 4

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
    

Véhicules 3 et 4 retournés

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
    

Retour de véhicules 2, 3 et 4

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
    

Champs de SearchVehiclesResponse

Un SearchVehiclesResponse se compose d'une liste d'entités VehicleMatch, classées selon l'attribut order_by spécifié dans le 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 point 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é maintenant.
vehicle_trips_waypoints Liste des points de cheminement 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 :

Utiliser des requêtes de filtrage

SearchVehicles et ListVehicles permettent de filtrer les attributs des véhicules à l'aide d'une requête de filtre.

Les requêtes de filtre ne permettent de filtrer que les attributs personnalisés des véhicules. Elles 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 les attributes, comme "Animaux acceptés", vos critères ne renverront que les véhicules qui acceptent les animaux et qui peuvent transporter au moins six passagers.

Pour la syntaxe des requêtes de filtre, consultez AIP-160 pour obtenir des exemples. Pour savoir comment créer des attributs de véhicule, consultez 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 avec la bibliothèque Java gRPC. Pour obtenir la liste complète des langues disponibles, consultez Bibliothèques clientes pour les services de déplacement à 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.

Étape suivante