Fahrzeuge suchen

Im Rahmen des On-Demand-Fahrdienstes können Sie mit der Methode SearchVehicles Fahrzeuge in der Nähe finden.

Mit der Methode SearchVehicles können Sie in Ihrer mobilen App für Endnutzer verfügbare Fahrzeuge in der Nähe finden, die am besten für eine bestimmte Fahrt oder eine Lieferanfrage geeignet sind. Die SearchVehicles API gibt eine sortierte Liste von Fahrzeugen zurück, deren Attribute mit den angeforderten Fahrtattributen übereinstimmen. Die Sortierung erfolgt nach Ihrer Wahl entweder nach der voraussichtlichen Ankunftszeit, der Entfernung oder der direkten Entfernung vom Abholort.

Suchattribute Fahrzeugattribute
  • Abhol- und Zielorte
  • Angefragte Fahrzeug- und Fahrtarten
  • Erforderliche Kapazität
  • Andere erforderliche übereinstimmende Attribute
  • Der letzte bekannte Standort eines Fahrzeugs
  • Der Fahrzeugstatus, ‑typ oder die ‑kapazität
  • Andere benutzerdefinierte Attribute

Methode SearchVehicles verwenden

So verwenden Sie SearchVehicles:

  1. Erstellen Sie eine SearchVehiclesRequest basierend auf der zuzuweisenden Fahrt.
  2. Rufen Sie die SearchVehicles API (vehicleService.searchVehicles) mit der erstellten Anfrage auf.
  3. Verarbeiten Sie die von der API zurückgegebene SearchVehicleResponse.

Felder von SearchVehiclesRequest

Verwenden Sie die folgenden erforderlichen Attributfelder, um eine SearchVehiclesRequest zu erstellen:

Feld Beschreibung
Übergeordnetes Element Erforderlich. Muss das Format „providers/{provider}“ haben. Der Anbieter muss die Projekt-ID des Google Cloud-Projekts sein, zu dem das Dienstkonto gehört, das diesen Aufruf ausführt.
vehicle_types Erforderlich. Angefragte Fahrzeugtypen: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE oder PEDESTRIAN.
trip_types Erforderlich. Entweder EXCLUSIVE (eine aktive Fahrt pro Fahrer) oder SHARED (eine oder mehrere Fahrten pro Fahrer).
minimum_capacity Erforderlich. Die verbleibende Mindestkapazität des Fahrzeugs für eine neue Fahrt, entweder für Fahrgäste oder Lieferungen.
pickup_point Erforderlich. Der Abholort der Fahrt in Breiten-/Längengradkoordinaten.
dropoff_point Optional. Der Zielort der Fahrt in Breiten-/Längengradkoordinaten. Das Feld ist erforderlich, wenn trip_types TripType.SHARED enthält.
pickup_radius_meters Erforderlich. Der Radius des Fahrzeugsuchbereichs in Metern vom Abholort.
order_by Erforderlich. Fahrzeuge nach einer der folgenden Optionen sortieren:
  • PICKUP_POINT_ETA, die voraussichtliche Ankunftszeit des Fahrzeugs am Abholort.
  • PICKUP_POINT_DISTANCE, die Entfernung zwischen dem Fahrzeug und dem Abholort.
  • DROPOFF_POINT_ETA, die voraussichtliche Ankunftszeit des Fahrzeugs am Zielort.
  • PICKUP_POINT_STRAIGHT_DISTANCE, die direkte Entfernung (nicht auf der Route) zwischen dem Fahrzeug und dem Abholort.
Anzahl Erforderlich. Die maximale Anzahl der zurückzugebenden Fahrzeuge, von 1 bis 50.
Filter Optional. Eine Filterabfrage, die bei der Suche nach Fahrzeugen angewendet werden soll.
maximum_staleness Optional. Beschränkt die Suche auf Fahrzeuge, die Standortaktualisierungen an Fleet Engine gesendet haben. Wenn dieses Feld nicht festgelegt ist, verwendet der Server standardmäßig fünf Minuten.

Eine vollständige Liste der Felder von SearchVehicleRequest finden Sie in der Referenzdokumentation.

Szenarien für SearchVehiclesRequest

In diesem Abschnitt finden Sie Beispiele für die Erstellung einer SearchVehiclesRequest.

Angenommen, ein Kunde möchte im Restaurant X abgeholt werden und Sie haben vier Fahrzeuge:

  • Fahrzeug 1: 3.500 m vom Restaurant X entfernt.
  • Fahrzeug 2: 100 m vom Restaurant X entfernt mit einer aktiven Fahrt mit Abholung und Zielort an den Standorten A und B.
  • Fahrzeug 3: 200 m vom Restaurant X entfernt mit einem verbleibenden Zielort in großer Entfernung.
  • Fahrzeug 4: 1.000 m vom Restaurant X entfernt.

Im Folgenden werden verschiedene Anfragen nach dem zurückgegebenen Fahrzeug angezeigt.

Gibt Fahrzeug 4 zurück

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
    

Gibt Fahrzeug 3 und 4 zurück

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
    

Gibt Fahrzeug 2, 3 und 4 zurück

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
    

Felder von SearchVehiclesResponse

Eine SearchVehiclesResponse besteht aus einer Liste von VehicleMatch-Entitäten, die nach dem angegebenen Attribut „order_by“ in der SearchVehiclesRequest sortiert sind. Jede VehicleMatch-Entität hat die folgenden Felder:

Feld Beschreibung
Verkehrsmittel Das Vehicle-Objekt, einschließlich der vehicle_id und der Vehicle-Attribute.
vehicle_pickup_eta Die voraussichtliche Ankunftszeit des Fahrzeugs am Abholort, wenn diese Fahrt dem Fahrzeug jetzt zugewiesen würde.
vehicle_pickup_distance_meter Die Entfernung in Metern zwischen dem Fahrzeug und dem Abholort der neuen Fahrt.
vehicle_pickup_straight_line_distance_meter Die direkte Entfernung in Metern zwischen dem Fahrzeug und dem Abholort der neuen Fahrt.
vehicle_dropoff_eta Die voraussichtliche Ankunftszeit des Fahrzeugs am Zielort, wenn diese Fahrt dem Fahrzeug jetzt zugewiesen würde.
vehicle_trips_waypoints Eine Liste der verbleibenden Wegpunkte, einschließlich Abhol- und Zielorten, für die aktiven Fahrten, die dem Fahrzeug derzeit zugewiesen sind.
vehicle_match_type Die Fahrtart des Fahrzeugs, entweder EXCLUSIVE, BACK_TO_BACK, CARPOOL oder CARPOOL_BACK_TO_BACK.

Eine vollständige Liste der VehicleMatch-Felder finden Sie unter:

Filterabfragen verwenden

SearchVehicles und ListVehicles unterstützen das Filtern nach Fahrzeugattributen mit einer Filterabfrage.

Filterabfragen unterstützen NUR das Filtern nach benutzerdefinierten Attributen für Fahrzeuge und können nicht für andere Felder verwendet werden. Wenn sie in einer Suche verwendet werden, die andere Feldkriterien wie minimum_capacity oder vehicle_types enthält, fungiert die Filterabfrage als AND-Klausel.

Wenn Sie beispielsweise nach einem Fahrzeug mit einer Mindestkapazität von 6 suchen und ein attributes wie „haustierfreundlich“ filtern, werden nur Fahrzeuge zurückgegeben, die sowohl haustierfreundlich sind als auch mindestens 6 Fahrgäste befördern können.

Informationen zur Syntax von Filterabfragen finden Sie unter AIP-160. Details zum Erstellen von Fahrzeugattributen finden Sie im Leitfaden Fahrzeugfelder aktualisieren im Feld „Fahrzeug attribute“.

Beispiel für SearchVehicles

Im folgenden Beispiel wird gezeigt, wie Sie die SearchVehicles API mit der Java gRPC-Bibliothek verwenden. Eine vollständige Liste der unterstützten Sprachen finden Sie unter Clientbibliotheken für On-Demand-Fahrdienste.

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.

Nächste Schritte