Cerca veicoli

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
  • 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

Usa 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 il una richiesta creata.
  3. 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:
  • 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 per completare la corsa al punto di partenza.
  • 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 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:

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.

Passaggi successivi