Cerca veicoli

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 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 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
  • Località di ritiro e riconsegna
  • Tipi di veicoli e viaggi richiesti
  • Capacità richiesta
  • Altri attributi di corrispondenza obbligatori
  • L'ultima posizione nota di un veicolo
  • Lo stato, il tipo o la capacità del veicolo
  • Altri attributi personalizzati

Utilizzare il metodo SearchVehicles

Per utilizzare SearchVehicles, segui questa procedura generale:

  1. Costruisci un SearchVehiclesRequest in base alla corsa da assegnare.
  2. Chiama l'API SearchVehicles (vehicleService.searchVehicles) con la richiesta costruita.
  3. 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:
  • PICKUP_POINT_ETA, l'orario di arrivo stimato del veicolo al punto di ritiro.
  • PICKUP_POINT_DISTANCE, la distanza tra il veicolo e il punto di ritiro.
  • DROPOFF_POINT_ETA, l'orario di arrivo stimato del veicolo al punto di consegna.
  • PICKUP_POINT_STRAIGHT_DISTANCE, la distanza in linea retta (non nel percorso) tra il veicolo e il punto di ritiro.
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 posizione di ritiro della nuova corsa.
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:

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

L'esempio seguente 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.

Passaggi successivi