Nell'ambito del servizio di viaggio di mobilità on demand, puoi trovare i veicoli nelle vicinanze
utilizzando il metodo SearchVehicles.
Il metodo SearchVehicles ti consente di trovare veicoli disponibili nelle vicinanze nella tua app mobile per i consumatori più adatti a una corsa o a una richiesta di consegna specifica. L'API SearchVehicles restituisce un elenco classificato di veicoli i cui
attributi corrispondono a quelli del viaggio richiesto. Il ranking è ordinato in base alla tua
scelta tra ETA, distanza o distanza in linea retta dal punto di partenza.
| Cerca attributi | Attributi veicolo |
|---|---|
|
|
Utilizzare il metodo SearchVehicles
Per utilizzare SearchVehicles, segui questa procedura generale:
- Costruisci un
SearchVehiclesRequestin base al viaggio da assegnare. - Chiama l'API
SearchVehicles(vehicleService.searchVehicles) con la richiesta creata. - Elabora
SearchVehicleResponserestituito 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 fornitore deve essere l'ID progetto del progetto Google Cloud di cui è membro il service account che effettua questa chiamata. |
| vehicle_types | Required. Tipi di veicoli richiesti: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE o PEDESTRIAN. |
| trip_types | Required. ESCLUSIVO (un viaggio attivo alla volta per autista) o CONDIVISO (uno o più viaggi alla volta per autista). |
| minimum_capacity | Required. La capacità residua minima del veicolo per un nuovo viaggio, per passeggeri o consegne. |
| pickup_point | Required. Il punto di partenza del viaggio in coordinate di latitudine/longitudine. |
| dropoff_point | (Facoltativo) Il punto di discesa della corsa in 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 del veicolo dal punto di partenza. |
| 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. |
| filtro | Facoltativo. Una query di filtro da applicare durante la ricerca dei veicoli. |
| maximum_staleness | Facoltativo. Limita la ricerca solo ai veicoli che hanno inviato aggiornamenti della posizione a Fleet Engine entro la durata specificata. Se questo campo non è impostato, il server utilizza cinque minuti come valore predefinito. |
Consulta la documentazione di riferimento per visualizzare l'insieme completo dei campi SearchVehicleRequest.
Scenari di SearchVehiclesRequest
Questa sezione mostra esempi di come creare un SearchVehiclesRequest.
Ad esempio, supponiamo che un cliente voglia essere prelevato dal ristorante X e che tu abbia quattro veicoli:
- Veicolo 1: a 3500 m dal ristorante X.
- Veicolo 2: a 100 metri dal ristorante X con un viaggio attivo con ritiro e rilascio nelle località A e B.
- Veicolo 3: a 200 metri dal ristorante X con una consegna rimanente molto lontana.
- Veicolo 4: a 1000 metri dal ristorante X.
Di seguito vengono visualizzate varie richieste in base al veicolo che restituiscono.
Returns Vehicle 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Restituisce i veicoli 3 e 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Restituisce i veicoli 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 in 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'ETA del veicolo presso il luogo di ritiro se questo viaggio venisse assegnato al veicolo in questo momento. |
| vehicle_pickup_distance_meter | La distanza in metri tra il veicolo e il luogo di ritiro della nuova corsa. |
| vehicle_pickup_straight_line_distance_meter | La distanza in linea retta in metri tra il veicolo e il luogo di partenza del nuovo viaggio. |
| vehicle_dropoff_eta | L'orario di arrivo stimato del veicolo nella località di riconsegna se questa corsa venisse assegnata al veicolo in questo momento. |
| vehicle_trips_waypoints | Un elenco dei waypoint rimanenti, inclusi i punti di prelievo e arrivo, per i viaggi attivi attualmente assegnati al veicolo. |
| vehicle_match_type | Il tipo di viaggio del veicolo: EXCLUSIVE, BACK_TO_BACK, CARPOOL o CARPOOL_BACK_TO_BACK. |
Per un elenco completo dei campi VehicleMatch, vedi:
VehicleMatch message(gRPC)VehicleMatch resource(REST)
Utilizzare le query di filtro
SearchVehicles e ListVehicles supportano il filtraggio in base agli attributi del veicolo
utilizzando una query di filtro.
Le query di filtro supportano SOLO il filtraggio in base agli attributi personalizzati per i veicoli e
non possono essere utilizzate per altri campi. Se utilizzato in una ricerca che include altri criteri
di campo, ad esempio minimum_capacity o vehicle_types, la query di filtro
funziona come 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 AIP-160 per esempi. Per informazioni dettagliate sulla creazione degli attributi del veicolo, consulta la sezione Campo attributi del veicolo nella guida Aggiornare i campi del veicolo.
Esempio di SearchVehicles
Il seguente esempio mostra come utilizzare l'API SearchVehicles utilizzando 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.