Dans le cadre de votre solution On-demand Rides and Deliveries, la planification et la distribution des itinéraires
vous permet de trouver les conducteurs à proximité en fournissant une API SearchVehicles
.
L'API SearchVehicles
vous permet de trouver les conducteurs disponibles à proximité dans votre
Application grand public de solution Rides and Deliveries à la demande, la mieux adaptée à une tâche
comme une demande de covoiturage ou de livraison. L'API SearchVehicles
renvoie
Une liste classée de conducteurs associant des attributs de tâche à des attributs
de véhicules de votre parc.
Les attributs de tâche peuvent inclure:
- Lieux de prise en charge et de dépose
- Véhicules et types de trajets demandés
- Capacité requise
- Autres attributs de correspondance obligatoires
Voici quelques exemples d'attributs d'un véhicule:
- Dernière position connue d'un véhicule
- État, type ou capacité du véhicule
- Autres attributs personnalisés
Le classement est établi en fonction de l'heure d'arrivée prévue, de la distance ou de la ligne droite. la distance à partir du point de départ.
Notez que vous devez disposer du rôle "Super utilisateur du service Fleet Engine" ou "Utilisateur du SDK client" pour le client.
pour utiliser l'API SearchVehicles
. Pour en savoir plus, consultez
Authentification et autorisation
Utiliser l'API SearchVehicles
Pour utiliser l'API SearchVehicles
:
- Créez une
SearchVehiclesRequest
en fonction de la tâche à attribuer. - Appeler l'API
SearchVehicles
(vehicleService.searchVehicles
) avec la requête construite. - 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 (par exemple, sample-cloud-project) 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 pour une nouvelle tâche (passagers ou livraisons). |
pickup_point | Obligatoire. Le lieu de prise en charge de la tâche, en coordonnées de latitude et de longitude. |
dropoff_point | Facultatif. Lieu de dépôt de la tâche 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:
|
nombre | Obligatoire. Nombre maximal de véhicules à renvoyer, compris entre 1 et 50. |
Reportez-vous à la documentation de référence pour découvrir l'ensemble SearchVehicleRequestfields
Exemples SearchVehiclesRequest
Cette section présente des exemples de construction d'un SearchVehiclesRequest
.
Supposons, par exemple, que vous ayez une tâche de retrait à attribuer chez RestaurantX. et quatre véhicules:
- Véhicule 1, à 3 500 m de RestaurantX.
- Le véhicule 2, à 100 m de RestaurantX et dont le trajet est actif avec un lieu de prise en charge et de dépose aux points A et B.
- Véhicule 3, à 200 m de RestaurantX, avec un passage restant très loin.
- Le véhicule 4, à 1 000 m de RestaurantX.
L'élément SearchVehiclesRequest
suivant renvoie le véhicule 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
L'élément SearchVehiclesRequest
suivant renvoie les véhicules 3 et 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Le code SearchVehiclesRequest
suivant 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 selon l'attribut "order_by" spécifié dans 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 | L'heure d'arrivée prévue du véhicule au lieu de prise en charge de la nouvelle tâche. 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 de la nouvelle tâche. |
vehicle_pickup_straight_line_distance_meter | Distance en ligne droite en mètres entre le véhicule et le lieu de prise en charge de la nouvelle tâche. |
vehicle_dropoff_eta | La valeur Timestamp de l'heure d'arrivée prévue du véhicule au lieu de prise en charge de la nouvelle tâche. Notez que l'heure d'arrivée prévue est 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. |
Exemple SearchVehicles
L'exemple suivant montre comment utiliser l'API SearchVehicles
:
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.