Nell'ambito del servizio di corse on demand di Mobility, puoi trovare i veicoli nelle vicinanze utilizzando il metodo SearchVehicles
.
Il metodo SearchVehicles
ti consente di trovare i veicoli disponibili nelle vicinanze nella tua app mobile per i consumatori più adatti a una corsa o una richiesta di consegna specifica. L'API SearchVehicles
restituisce un elenco classificato di veicoli i cui attributi corrispondono agli attributi della corsa richiesti. Il ranking è ordinato in base alla tua scelta tra orario di arrivo stimato, distanza o distanza in linea retta dal punto di ritiro.
Attributi di ricerca | Attributi veicolo |
---|---|
|
|
Utilizzare il metodo SearchVehicles
Per utilizzare SearchVehicles
, segui questa procedura generale:
- Costruisci un
SearchVehiclesRequest
in base alla corsa da assegnare. - Chiama l'API
SearchVehicles
(vehicleService.searchVehicles
) con la richiesta costruita. - Elabora il valore
SearchVehicleResponse
restituito dall'API.
Campi SearchVehiclesRequest
Utilizza i seguenti campi degli attributi obbligatori per creare un
SearchVehiclesRequest
:
Campo | Descrizione |
---|---|
principale | Required. Deve essere nel formato providers/{provider}. Il provider deve essere l'ID progetto del progetto Google Cloud di cui l'account di servizio che effettua questa chiamata è membro. |
vehicle_types | Required. Tipi di veicoli richiesti: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE o PEDESTRIAN. |
trip_types | Required. EXCLUSIVE (un viaggio attivo alla volta per conducente) o CONDIVISO (uno o più viaggi alla volta per conducente). |
minimum_capacity | Required. La capacità minima rimanente del veicolo per una nuova corsa, per passeggeri o consegne. |
pickup_point | Required. La posizione di partenza del viaggio in coordinate lat/long. |
dropoff_point | Facoltativo. La posizione di destinazione del viaggio in coordinate lat/long. Il campo è obbligatorio se trip_types contiene TripType.SHARED. |
pickup_radius_meters | Required. Il raggio in metri dell'area di ricerca del veicolo 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, compreso tra 1 e 50. |
Filtro | Facoltativo. Una query filtro da applicare durante la ricerca dei veicoli. |
Consulta la documentazione di riferimento per visualizzare l'insieme completo di campi SearchVehicleRequest.
Scenari di SearchVehiclesRequest
Questa sezione mostra esempi di come creare un SearchVehiclesRequest
.
Ad esempio, supponiamo che un cliente voglia essere prelevato al Ristorante X e che tu abbia quattro veicoli:
- Veicolo 1: a 3500 m da RestaurantX.
- Veicolo 2: a 100 m dal ristorante X con una corsa attiva con ritiro e riconsegna nelle località A e B.
- Veicolo 3: a 200 m dal ristorante X con un'altra consegna molto distante.
- Veicolo 4: a 1000 m da RestaurantX.
Di seguito vengono visualizzate varie richieste del veicolo restituite.
Restituisce il veicolo 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Restituisce il veicolo 3 e 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Restituisce il veicolo 2, 3 e 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
Campi SearchVehiclesResponse
Un SearchVehiclesResponse
è costituito da un elenco di entità VehicleMatch
, classificate in base all'attributo order_by specificato nel SearchVehiclesRequest
. Ogni entità VehicleMatch
ha 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 alla stazione di ricarica del nuovo viaggio. Si tratta dell'orario di arrivo stimato in auto. |
vehicle_pickup_distance_meter | La distanza in metri tra il veicolo e la posizione di ritiro della nuova corsa. |
vehicle_pickup_straight_line_distance_meter | La distanza in linea retta in metri tra il veicolo e la stazione di ricarica del nuovo viaggio. |
vehicle_dropoff_eta | Il timestamp dell'orario di arrivo stimato del veicolo nella località di ritiro del nuovo viaggio. Tieni presente che l'orario di arrivo stimato è quello in auto. |
vehicle_trips_waypoints | Un elenco di waypoint rimanenti, inclusi i punti di prelievo e di consegna, per i viaggi attivi attualmente assegnati al veicolo. |
vehicle_match_type | Il tipo di corsa del veicolo, EXCLUSIVE, BACK_TO_BACK, CARPOOL o CARPOOL_BACK_TO_BACK. |
Per un elenco completo dei campi VehicleMatch
, consulta:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
Utilizzare le query con filtri
SearchVehicles
e ListVehicles
supportano i filtri per gli attributi dei veicoli
utilizzando una query con filtro.
Le query di filtro supportano SOLO il filtro in base agli attributi personalizzati per i veicoli e non possono essere utilizzate per altri campi. Se utilizzata in una ricerca che include altri criteri
del campo, come minimum_capacity
o vehicle_types
, la query di filtro
funziona come una clausola AND
.
Ad esempio, se cerchi un veicolo con una capacità minima di 6 persone e filtri un attributes
come animali domestici ammessi, i tuoi criteri restituiranno solo i veicoli che ammettono animali domestici e possono trasportare almeno 6 passeggeri.
Per la sintassi delle query di filtro, consulta l'AIP-160 per esempi. Per informazioni dettagliate sulla creazione degli attributi dei veicoli, consulta il campo Attribute vehicle nella guida Aggiornare i campi del veicolo.
Esempio di SearchVehicles
Il seguente esempio mostra come utilizzare l'API SearchVehicles
con la
libreria gRPC Java.
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.