Come parte della soluzione On-demand Rides and Deliveries, la pianificazione del percorso e la spedizione
consente di trovare conducenti nelle vicinanze fornendo un'API SearchVehicles
.
L'API SearchVehicles
ti consente di trovare conducenti disponibili nelle vicinanze nei tuoi
App per consumatori On demand Rides and Deliveries Solution più adatta a un'attività
come una corsa o una richiesta di consegna. L'API SearchVehicles
restituisce
un elenco classificato di conducenti che corrispondono agli attributi delle attività con attributi
di veicoli della tua flotta.
Gli attributi delle attività possono includere:
- Luoghi di prelievo e destinazione
- Tipi di veicolo e di viaggio richiesti
- Capacità richiesta
- Altri attributi di corrispondenza obbligatori
Gli attributi dei veicoli possono includere:
- L'ultima posizione nota di un veicolo
- Lo stato, il tipo o la capacità del veicolo
- Altri attributi personalizzati
Il ranking è ordinato in base alla tua scelta di orario di arrivo stimato, distanza o linea retta distanza dal punto di partenza.
Tieni presente che devi avere un super user del servizio Fleet Engine o un utente SDK consumer
i privilegi necessari per utilizzare l'API SearchVehicles
. Per ulteriori informazioni, vedi
Autenticazione e autorizzazione.
Utilizzo dell'API SearchVeicolis
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
SearchVehicleResponse
restituito dall'API.
Campi SearchVeicolisRequest
Utilizza i seguenti campi degli attributi obbligatori per creare un
SearchVehiclesRequest
:
Campo | Descrizione |
---|---|
principale | Required. Deve essere nel formato provider/{provider}. Il provider deve essere l'ID progetto (ad esempio sample-cloud-project) del progetto Google Cloud di cui fa parte l'account di servizio che effettua questa chiamata. |
vehicle_types | Required. Tipi di veicoli richiesti: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE o PEDESTRIAN. |
trip_types | Required. ESCLUSIVO (una corsa attiva alla volta per autista) o CONDIVISI (una o più corse alla volta per autista). |
minimum_capacity | Required. La capacità minima rimanente del veicolo per una nuova attività, per passeggeri o consegne. |
pickup_point | Required. Il punto di partenza dell'attività nelle coordinate di latitudine/longitudine. |
dropoff_point | (Facoltativo) Il punto di consegna dell'attività nelle coordinate di latitudine/longitudine. Il campo è obbligatorio se trip_types contiene TripType.SHARED. |
pickup_radius_meters | Required. Il raggio in metri dell'area di ricerca dei veicoli dal punto di ritiro. |
order_by | Required. Ordina i veicoli in base a uno dei seguenti criteri:
|
conteggio | Required. Il numero massimo di veicoli da restituire da 1 a 50. |
Per vedere il set completo, consulta la documentazione di riferimento SearchVehicleRequestfields.
Esempi di richieste di veicoli per la ricerca
Questa sezione mostra esempi di come creare un SearchVehiclesRequest
.
Ad esempio, supponiamo che tu debba assegnare un'attività di ritiro presso RestaurantX e quattro veicoli:
- Veicolo 1, a 3500 m di distanza da RestaurantX.
- Veicolo 2, a 100 m di distanza da RestaurantX, con una corsa attiva con servizio di prelievo e ritiro presso le sedi A e B.
- Veicolo 3, a 200 m di distanza da RestaurantX, con un dislivello rimanente lontano da noi.
- Veicolo 4, a 1000 m di distanza da RestaurantX.
Il seguente SearchVehiclesRequest
restituisce il Veicolo 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Il seguente SearchVehiclesRequest
restituisce il Veicolo 3 e 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Il seguente SearchVehiclesRequest
restituisce il Veicolo 2, 3 e 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
Campi SearchVeicolisResponse
Un elemento SearchVehiclesResponse
è composto da un elenco di entità VehicleMatch
,
ordinati in base all'attributo order_by specificato in SearchVehiclesRequest
.
Ogni entità VehicleMatch
ha i seguenti campi:
Campo | Descrizione |
---|---|
Veicolo | L'oggetto Vehicle , inclusi gli attributi traffic_id e Vehicle . |
vehicle_pickup_eta | L'orario di arrivo stimato del veicolo nel luogo di prelievo della nuova attività. Questo è l'orario di arrivo stimato in auto. |
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 linea retta in metri tra il veicolo e il punto di partenza della nuova attività. |
vehicle_dropoff_eta | Il timestamp dell'orario di arrivo stimato del veicolo nel punto di prelievo della nuova attività. Tieni presente che l'orario di arrivo stimato è l'orario di arrivo stimato in auto. |
vehicle_trips_waypoints | Un elenco di tappe rimanenti, inclusi i punti di prelievo e destinazione, per le corse attive attualmente assegnate al veicolo. |
vehicle_match_type | Il tipo di corsa del veicolo, EXCLUSIVE, BACK_TO_BACK, CARPOOL o CARPOOL_BACK_TO_BACK. |
Esempio SearchVeicoli
L'esempio seguente mostra 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.