Nell'ambito della tua soluzione On-demand Rides and Deliveries, la funzionalità di pianificazione del percorso e di spedizione ti consente di trovare conducenti nelle vicinanze fornendo un'API SearchVehicles
.
L'API SearchVehicles
ti consente di trovare i conducenti disponibili nelle vicinanze nella tua app consumer on demand Rides and Deliveries Solution più adatti a un'attività, ad esempio una corsa o una richiesta di consegna. L'API SearchVehicles
restituisce
un elenco classificato di conducenti che corrispondono agli attributi delle attività con quelli
dei veicoli del tuo parco risorse.
Gli attributi delle attività possono includere:
- Località di prelievo e consegna
- Tipi di veicolo e viaggio richiesti
- Capacità richiesta
- Altri attributi corrispondenti obbligatori
Gli attributi del veicolo possono includere:
- L'ultima posizione nota di un veicolo
- Lo stato, il tipo o la capacità del veicolo.
- Altri attributi personalizzati
Il ranking viene ordinato in base all'orario di arrivo stimato, alla distanza o alla distanza in linea retta dal punto di prelievo.
Tieni presente che devi disporre dei privilegi Super User o Utente SDK del servizio Fleet Engine per utilizzare l'API SearchVehicles
. Per ulteriori informazioni, consulta la sezione Autenticazione e autorizzazione.
Utilizzo dell'API Search Vehicles
Per utilizzare l'API SearchVehicles
:
- Crea un
SearchVehiclesRequest
in base all'attività da assegnare. - Chiama l'API
SearchVehicles
(vehicleService.searchVehicles
) con la richiesta creata. - Elabora il
SearchVehicleResponse
restituito dall'API.
Campi Search VehiclesRequest
Utilizza i seguenti campi degli attributi obbligatori per creare un SearchVehiclesRequest
:
Campo | Descrizione |
---|---|
parent | Obbligatorio. Deve essere nel formato provider/{provider}. Il provider deve essere l'ID progetto (ad esempio, progetto cloud-campione) del progetto Google Cloud di cui fa parte l'account di servizio che effettua la chiamata. |
vehicle_types | Obbligatorio. Tipi di veicoli richiesti: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE o PEDESTRIAN. |
trip_types | Obbligatorio. Può essere ESCLUSIVA (una corsa attiva alla volta per conducente) o CONDIVISI (una o più corse alla volta per conducente). |
minimum_capacity | Obbligatorio. La capacità minima rimanente del veicolo per una nuova attività, per passeggeri o consegne. |
pickup_point | Obbligatorio. Il punto di partenza dell'attività in coordinate di latitudine/longitudine. |
dropoff_point | Campo facoltativo. Il punto di consegna dell'attività in coordinate di latitudine/longitudine. Il campo è obbligatorio se trip_types contiene TripType.SHARED. |
pickup_radius_meters | Obbligatorio. Il raggio in metri dell'area di ricerca del veicolo dal punto di prelievo. |
order_by | Obbligatorio. Ordina i veicoli in base a uno dei seguenti criteri:
|
conteggio | Obbligatorio. Il numero massimo di veicoli da restituire da 1 a 50. |
Consulta la documentazione di riferimento per visualizzare l'intero set di SearchVehicleRequestfields.
Esempi di richieste di ricerca veicoli
Questa sezione mostra esempi di come creare un SearchVehiclesRequest
.
Ad esempio, supponi di avere un'attività di ritiro da assegnare al ristorante X e quattro veicoli:
- Veicolo 1, che dista 3500 m dal ristoranteX.
- Veicolo 2, che dista 100 m dal ristoranteX e ha una corsa attiva con prelievo e arrivo alle sedi A e B.
- Veicolo 3, che dista 200 m dal ristoranteX e ha un punto di consegna molto lontano.
- Veicolo 4, che dista 1000 m da RestaurantX.
Il seguente elemento SearchVehiclesRequest
restituisce il veicolo 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Il seguente elemento SearchVehiclesRequest
restituisce i veicoli 3 e 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Il seguente elemento SearchVehiclesRequest
restituisce i veicoli 2, 3 e 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
Campi Search VehiclesResponse
Un SearchVehiclesResponse
è costituito da un elenco di entità VehicleMatch
,
classificate in base all'attributo order_by specificato in SearchVehiclesRequest
.
Ogni entità VehicleMatch
include i seguenti campi:
Campo | Descrizione |
---|---|
Veicolo | L'oggetto Vehicle , inclusi gli attributi Vehicle_id e Vehicle . |
vehicle_pickup_eta | L'orario di arrivo stimato del veicolo nel luogo di ritiro della nuova attività. Questo è l'orario di arrivo stimato guida. |
vehicle_pickup_distance_meter | La distanza in metri tra il veicolo e il punto di prelievo della nuova attività. |
vehicle_pickup_straight_line_distance_meter | La distanza in metri tra il veicolo e il punto di prelievo della nuova attività. |
vehicle_dropoff_eta | Il timestamp dell'orario di arrivo stimato del veicolo nel luogo di ritiro della nuova attività. Tieni presente che l'orario di arrivo stimato è quello di guida. |
vehicle_trips_waypoints | Un elenco dei waypoint rimanenti, inclusi i punti di prelievo e di arrivo, per le corse attive attualmente assegnate al veicolo. |
vehicle_match_type | Il tipo di viaggio del veicolo, EXCLUSIVE, BACK_TO_BACK, CARPOOL o CARPOOL_BACK_TO_BACK. |
Esempio di veicoli della rete di ricerca
Nell'esempio seguente viene illustrato come utilizzare 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.