Rechercher des véhicules

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 les véhicules disponibles à proximité dans votre l'application mobile la plus adaptée pour un trajet ou une livraison spécifique. requête. L'API SearchVehicles renvoie une liste classée de véhicules dont correspondent aux attributs de trajet demandés. Le classement est hiérarchisé Vous pouvez choisir entre l'heure d'arrivée prévue, la distance ou la distance en ligne droite depuis le lieu de prise en charge.

Attributs de recherche Attributs du véhicule
  • Lieux de prise en charge et de dépose
  • Véhicules et types de trajets demandés
  • Capacité requise
  • Autres attributs de correspondance obligatoires
  • 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, procédez comme suit:

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

Champs SearchVehiclesRequest

Utilisez les champs d'attribut 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 auquel appartient le compte de service qui effectue cet appel.
vehicle_types Obligatoire. Types de véhicules demandés : AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE ou PEDESTRIAN.
trip_types Obligatoire. EXCLUSIF (un 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 lors d'un nouveau trajet (passagers ou livraisons).
pickup_point Obligatoire. Lieu de départ du trajet en coordonnées de latitude et de longitude.
dropoff_point Facultatif. Lieu de dépose du trajet, en coordonnées de latitude et de 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éhicule à partir du lieu de prise en charge.
order_by Obligatoire. Commandez les véhicules de l'une des façons suivantes:
  • PICKUP_POINT_ETA, l'heure d'arrivée prévue du véhicule au lieu de prise en charge
  • PICKUP_POINT_DISTANCE, la distance entre le véhicule et le lieu de prise en charge
  • DROPOFF_POINT_ETA, l'heure d'arrivée prévue du véhicule pour terminer le trajet au point de dépôt.
  • PICKUP_POINT_STRAIGHT_DISTANCE : distance en ligne droite (hors trajet) entre le véhicule et le lieu de prise en charge.
nombre Obligatoire. Nombre maximal de véhicules à renvoyer, compris 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 découvrir l'ensemble SearchVehicleRequest

Scénarios SearchVehiclesRequest

Cette section présente des exemples de construction d'un SearchVehiclesRequest.

Par exemple, supposons qu'un client souhaite être pris en charge chez RestaurantX. et que vous avez quatre véhicules:

  • Véhicule 1: à 3 500 m de RestaurantX.
  • Véhicule 2: à 100 m de RestaurantX, avec un trajet actif avec prise en charge et de dépose aux emplacements A et B.
  • Véhicule 3: à 200 m de RestaurantX, avec un dépôt restant très à distance.
  • Véhicule 4: à 1 000 m de RestaurantX.

Vous trouverez ci-dessous différentes demandes en fonction du véhicule renvoyé.

Retours du 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

Un élément SearchVehiclesResponse est constitué d'une liste d'entités VehicleMatch, classées par l'attribut "order_by" spécifié dans SearchVehiclesRequest. Chaque L'entité VehicleMatch comporte les champs suivants:

Champ Description
véhicule L'objet Vehicle, y compris les attributs "vehicle_id" et Vehicle
vehicle_pickup_eta L'heure d'arrivée prévue du véhicule au lieu de prise en charge du nouveau trajet. Il s'agit de l'heure d'arrivée prévue conduite.
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 exprimée en mètres entre le véhicule et le lieu de prise en charge du nouveau trajet.
vehicle_dropoff_eta La valeur Timestamp 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 correspond à l'heure d'arrivée prévue conduire.
vehicle_trips_waypoints Liste des points de cheminement restants, y compris les lieux 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 pages suivantes:

Utiliser des requêtes de filtre

SearchVehicles et ListVehicles acceptent le filtrage en fonction des attributs du véhicule à l'aide d'une requête de filtre.

Les requêtes de filtrage SEULEMENT permettent de filtrer des attributs personnalisés pour les véhicules. ne peut pas être utilisée pour d'autres champs. Lorsqu'elle est utilisée dans une recherche incluant d'autres champs comme 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 filtrer une attributes (par exemple, "pet-friendly"), votre critère renverrait uniquement les véhicules qui acceptent les animaux et peuvent transporter au moins six passagers.

Pour en savoir plus sur la syntaxe des requêtes de filtre, consultez la page AIP-160. pour obtenir des exemples. Pour en savoir plus sur la création d'attributs de véhicule, consultez 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 méthode Bibliothèque Java gRPC.

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