Nell'ambito del servizio di mobilità on demand, puoi trovare veicoli nelle vicinanze
usando il metodo SearchVehicles
.
Il metodo SearchVehicles
ti consente di trovare veicoli disponibili nelle vicinanze nel tuo
app mobile per consumatori più adatta a una corsa o una consegna specifica
richiesta. L'API SearchVehicles
restituisce un elenco classificato di veicoli i cui attributi corrispondono agli attributi della corsa richiesti. Il ranking è ordinato in base a
scelta tra orario di arrivo stimato, distanza o distanza in linea retta dal punto di partenza.
Attributi di ricerca | Attributi veicolo |
---|---|
|
|
Usa 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 il una 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 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. 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 corsa, per passeggeri o consegne. |
pickup_point | Required. Il punto di partenza della corsa nelle coordinate di latitudine/longitudine. |
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 di 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.
Restituzione veicolo 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Restituire 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 SearchVeicolisResponse
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 traffic_id e Vehicle . |
vehicle_pickup_eta | L'orario di arrivo stimato del veicolo nel punto di prelievo della nuova corsa. Questo è l'orario di arrivo stimato in auto. |
vehicle_pickup_distance_meter | La distanza in metri tra il veicolo e la stazione di ricarica del nuovo viaggio. |
vehicle_pickup_straight_line_distance_meter | La distanza in linea retta in metri tra il veicolo e la posizione di ritiro della nuova corsa. |
vehicle_dropoff_eta | Il timestamp dell'orario di arrivo stimato del veicolo nel punto di prelievo della nuova corsa. 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 di filtro
SearchVehicles
e ListVehicles
supportano i filtri in base agli attributi del veicolo
utilizzando una query di 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 che ha una capacità minima di 6 e
filtrando un attributes
, ad esempio "animali domestici", i criteri restituiranno solo
Veicoli adatti agli animali domestici e che possono trasportare almeno 6 passeggeri.
Per la sintassi delle query di filtro, consulta l'AIP-160 per esempi. Per maggiori dettagli sulla creazione degli attributi del veicolo, consulta Veicolo. degli attributi nella guida Aggiornare i campi del veicolo.
Esempio SearchVeicoli
L'esempio seguente mostra come utilizzare l'API SearchVehicles
mediante l'istruzione
libreria Java gRPC.
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.