Fahrer in der Nähe werden gesucht

Im Rahmen Ihrer On-demand Rides and Deliveries-Lösung können Sie mithilfe einer SearchVehicles API Fahrer in der Nähe finden.

Mit der SearchVehicles API können Sie verfügbare Fahrer in der Nähe in Ihrem On-demand Rides and Deliveries-Lösung für Verbraucher-Apps, die am besten für eine Aufgabe geeignet sind etwa eine Fahrt oder eine Lieferanfrage. Die SearchVehicles API gibt Eine Rangliste von Fahrern, die Aufgabenattribute mit Attributen abgleichen der Fahrzeuge in Ihrem Fuhrpark.

Aufgabenattribute können Folgendes umfassen:

  • Abhol- und Abgabeorte
  • Angeforderte Fahrzeug- und Fahrttypen
  • Erforderliche Kapazität
  • Andere erforderliche Attribute zum Abgleich

Fahrzeugattribute können Folgendes umfassen:

  • Der letzte bekannte Standort eines Fahrzeugs
  • Zustand, Typ oder Kapazität des Fahrzeugs
  • Andere benutzerdefinierte Attribute

Das Ranking wird nach der voraussichtlichen Ankunftszeit, der Entfernung oder der geraden Linie sortiert. Entfernung vom Abholpunkt.

Sie müssen Fleet Engine Service Super User oder Consumer SDK User haben. Berechtigungen zur Verwendung der SearchVehicles API. Weitere Informationen finden Sie unter Authentifizierung und Autorisierung.

SearchVehicles API verwenden

So verwenden Sie die SearchVehicles API:

  • Erstellen Sie basierend auf der zuzuweisenden Aufgabe eine SearchVehiclesRequest.
  • SearchVehicles API (vehicleService.searchVehicles) aufrufen durch die erstellte Anfrage.
  • Verarbeiten Sie die SearchVehicleResponse, die von der API zurückgegeben wurden.

SearchVehiclesRequest-Felder

Verwenden Sie die folgenden erforderlichen Attributfelder zum Erstellen einer SearchVehiclesRequest:

Feld Beschreibung
Übergeordnetes Element Erforderlich. Muss im Format „provider/{provider}“ angegeben werden. Der Anbieter muss die Projekt-ID (z. B. sample-cloud-project) des Google Cloud-Projekts sein, zu dem das Dienstkonto, das diesen Aufruf durchführt, gehört.
vehicle_types Erforderlich. Angeforderte Fahrzeugtypen: AUTO, TWO_WHEELER, TAXI, LKW, BICYCLE oder FUẞGÄNGER
trip_types Erforderlich. Entweder EXKLUSIV (eine aktive Fahrt pro Fahrer) oder GETEILT (eine oder mehrere Fahrten gleichzeitig und pro Fahrer).
minimum_capacity Erforderlich. Die minimale verbleibende Kapazität des Fahrzeugs für eine neue Aufgabe, entweder für Passagiere oder Lieferungen.
pickup_point Erforderlich. Der Abholort der Aufgabe in Breiten- und Längengraden.
dropoff_point Optional. Der Abgabeort der Aufgabe in Breiten- und Längengraden. Das Feld ist erforderlich, wenn trip_types „TripType.SHARED“ enthält.
pickup_radius_meters Erforderlich. Der Radius des Fahrzeugsuchbereichs in Metern vom Abholpunkt.
order_by Erforderlich. Sie können Fahrzeuge nach einer der folgenden Optionen bestellen:
  • PICKUP_POINT_ETA, die voraussichtliche Ankunftszeit des Fahrzeugs am Abholpunkt.
  • PICKUP_POINT_DISTANCE, die Entfernung zwischen Fahrzeug und Abholpunkt.
  • DROPOFF_POINT_ETA: Die voraussichtliche Ankunftszeit des Fahrzeugs für die Fahrt an der Abgabestelle.
  • PICKUP_POINT_STRAIGHT_DISTANCE, die Luftlinie (nicht auf der Route) zwischen dem Fahrzeug und dem Abholpunkt.
Anzahl Erforderlich. Die maximale Anzahl der zurückzugebenden Fahrzeuge von 1 bis 50.

In der Referenzdokumentation finden Sie alle SearchVehicleRequestfields zurückgegeben.

SearchVehiclesRequest-Beispiele

Dieser Abschnitt enthält Beispiele zum Erstellen einer SearchVehiclesRequest.

Angenommen, Sie haben eine Abholungsaufgabe bei RestaurantX zugewiesen. und vier Fahrzeuge:

  • Fahrzeug 1 in 3.500 m Entfernung von RestaurantX.
  • Fahrzeug 2, das 100 m von RestaurantX entfernt ist und eine aktive Fahrt hat mit Abhol- und Ausstieg an den Standorten A und B.
  • Fahrzeug 3, das 200 m von RestaurantX entfernt ist und ein weiteres Hindernis ist sehr weit weg.
  • Fahrzeug 4, 1.000 m von RestaurantX entfernt.

Die folgende SearchVehiclesRequest gibt Fahrzeug 4 zurück:

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

Die folgende SearchVehiclesRequest gibt Fahrzeug 3 und 4 zurück:

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

Die folgende SearchVehiclesRequest gibt Fahrzeug 2, 3 und 4 zurück:

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

SearchVehiclesResponse-Felder

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

Feld Beschreibung
Verkehrsmittel Das Vehicle-Objekt, einschließlich der Attribute „vehicle_id“ und „Vehicle
vehicle_pickup_eta Die voraussichtliche Ankunftszeit des Fahrzeugs am Abholort der neuen Aufgabe. Das ist die voraussichtliche Ankunftszeit für driving.
vehicle_pickup_distance_meter Die Entfernung in Metern zwischen dem Fahrzeug und dem Abholort der neuen Aufgabe.
vehicle_pickup_straight_line_distance_meter Die Luftlinie zwischen dem Fahrzeug und dem Abholort der neuen Aufgabe in Metern.
vehicle_dropoff_eta Der Zeitstempel der voraussichtlichen Ankunftszeit des Fahrzeugs am Abholort des neuen Auftrags. Die voraussichtliche Ankunftszeit ist die voraussichtliche Ankunftszeit.
vehicle_trips_waypoints Eine Liste der verbleibenden Wegpunkte, einschließlich Start- und Zielpunkten, für die aktiven Fahrten, die dem Fahrzeug aktuell zugewiesen sind.
vehicle_match_type Die Fahrtart des Fahrzeugs, entweder EXCLUSIVE, BACK_TO_BACK, CARPOOL oder CARPOOL_BACK_TO_BACK.

SearchVehicles-Beispiel

Das folgende Beispiel zeigt, wie die SearchVehicles API verwendet wird:

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.