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 specifica richiesta di corsa o consegna. L'API SearchVehicles restituisce un elenco classificato di veicoli i cui attributi corrispondono a quelli della corsa richiesta. Il ranking è ordinato in base alla tua scelta tra l'orario di arrivo stimato, la distanza o la distanza in linea retta dal punto di partenza.
| Cerca attributi | Attributi veicolo |
|---|---|
|
|
Utilizza il metodo SearchVehicles
Per utilizzare SearchVehicles, segui questa procedura generale:
- Crea un
SearchVehiclesRequestin base alla corsa da assegnare. - Chiama l'API
SearchVehicles(vehicleService.searchVehicles) con la richiesta creata. - Elabora l'oggetto
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 provider deve essere l'ID progetto Google Cloud di cui è membro il service account che effettua questa chiamata. |
| vehicle_types | Required. Tipi di veicoli richiesti, ovvero AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE o PEDESTRIAN. |
| trip_types | Required. EXCLUSIVE (una corsa attiva alla volta per conducente) o SHARED (una o più corse alla volta per conducente). |
| minimum_capacity | Required. La capacità minima rimanente del veicolo per una nuova corsa, sia per i passeggeri che per le consegne. |
| pickup_point | Required. La località di partenza della corsa in coordinate di latitudine/longitudine. |
| dropoff_point | Facoltativo. La località di arrivo 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 di 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 presso il ristorante X e che tu abbia quattro veicoli:
- Veicolo 1: a 3500 m dal RistoranteX.
- Veicolo 2: a 100 m dal RistoranteX con una corsa attiva con un ritiro e una consegna nelle località A e B.
- Veicolo 3: a 200 m dal RistoranteX con una consegna rimanente molto lontana.
- Veicolo 4: a 1000 m dal RistoranteX.
Di seguito sono riportate 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'orario di arrivo stimato del veicolo presso la località di partenza se questa corsa dovesse essere assegnata al veicolo in questo momento. |
| vehicle_pickup_distance_meter | La distanza in metri tra il veicolo e la località di partenza della nuova corsa. |
| vehicle_pickup_straight_line_distance_meter | La distanza in linea retta in metri tra il veicolo e la località di partenza della nuova corsa. |
| vehicle_dropoff_eta | L'orario di arrivo stimato del veicolo presso la località di arrivo se questa corsa dovesse essere assegnata al veicolo in questo momento. |
| vehicle_trips_waypoints | Un elenco dei waypoint rimanenti, inclusi i punti di partenza e di arrivo, per le corse attive attualmente assegnate al veicolo. |
| vehicle_match_type | Il tipo di corsa del veicolo, ovvero EXCLUSIVE, BACK_TO_BACK, CARPOOL o CARPOOL_BACK_TO_BACK. |
Per un elenco completo dei campi VehicleMatch, consulta:
VehicleMatch message(gRPC)VehicleMatch resource(REST)
Utilizza le query di filtro
SearchVehicles e ListVehicles supportano l'applicazione di filtri agli attributi del veicolo 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 di 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 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 Campo degli attributi del veicolo nella guida Aggiorna i campi del veicolo.
Esempio di SearchVehicles
L'esempio seguente mostra come utilizzare l'API SearchVehicles utilizzando la libreria gRPC Java. Per un elenco completo delle lingue supportate, consulta Librerie client per i servizi di corse on demand.
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.