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
corrispondano 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.
Cerca attributi | Attributi veicolo |
---|---|
|
|
Utilizzare il metodo SearchVehicles
Per utilizzare SearchVehicles
, segui questa procedura generale:
- Crea 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 del progetto Google Cloud di cui fa parte l'account di servizio che effettua la 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 corsa, per passeggeri o consegne. |
pickup_point | Required. Il punto di partenza della corsa nelle coordinate di latitudine/longitudine. |
dropoff_point | (Facoltativo) Il punto di arrivo della corsa 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. |
Filtro | Facoltativo. Una query di filtro da applicare quando cerchi veicoli. |
Per vedere il set completo, consulta la documentazione di riferimento Campi SearchVehicleRequest.
Scenari di SearchVeicolisRequest
Questa sezione mostra esempi di come creare un SearchVehiclesRequest
.
Ad esempio, supponiamo che un cliente voglia farti venire a prendere in un RestaurantX, e hai quattro veicoli:
- Veicolo 1: a 3500 m da RestaurantX.
- Veicolo 2: a 100 m da RestaurantX con una corsa attiva con prelievo e scendere a destinazione alle località A e B.
- Veicolo 3: a 200 m da RestaurantX con una fermata rimanente molto lontano.
- Veicolo 4: a 1000 m da RestaurantX.
Di seguito sono riportate varie richieste da parte del veicolo restituito.
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
è composto da un elenco di VehicleMatch
entità, classificate
dall'attributo order_by specificato in SearchVehiclesRequest
. Ciascuna
L'entità VehicleMatch
contiene 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 il punto di partenza della nuova corsa. |
vehicle_pickup_straight_line_distance_meter | La distanza in linea retta in metri tra il veicolo e il punto di partenza 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 è 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. |
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 l'applicazione di filtri in base ad attributi personalizzati per i veicoli e
non può essere utilizzato per altri campi. Se utilizzato in una ricerca che include un altro 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, vedi AIP-160 per consultare alcuni esempi. Per informazioni dettagliate sulla creazione degli attributi dei veicoli, consulta il campo Attribute vehicle 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.