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 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
  • Luoghi di prelievo e destinazione
  • Tipi di veicolo e di viaggio 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. Crea 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 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:
  • 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 partenza.
  • 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 lungo il percorso) tra il veicolo e il punto di partenza.
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:

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.

Passaggi successivi