Fahrer in der Nähe werden gesucht

Im Rahmen Ihrer On-Demand-Lösung „Rides and Deliveries“ können Sie mithilfe der Funktionen „Routenplanung“ und „Dispatcher“ Fahrer in der Nähe finden, indem Sie eine SearchVehicles API bereitstellen.

Mit der SearchVehicles API können Sie in Ihrer On-Demand-Nutzer-App „Ride and Deliveries“ Fahrer in der Nähe finden, die sich am besten für eine Aufgabe wie eine Fahrt oder eine Lieferanfrage eignen. Die SearchVehicles API gibt eine Rangliste von Fahrern zurück, die Aufgabenattribute mit Attributen von Fahrzeugen Ihrer Flotte übereinstimmen.

Aufgabenattribute können Folgendes umfassen:

  • Abhol- und Rückgabeorte
  • Angeforderte Fahrzeug- und Fahrttypen
  • Erforderliche Kapazität
  • Weitere erforderliche übereinstimmende Attribute

Mögliche Fahrzeugattribute:

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

Die Reihenfolge der Rangfolge basiert auf der voraussichtlichen Ankunftszeit, der Entfernung oder der Luftlinie vom Abholpunkt.

Sie benötigen die Berechtigungen „Fleet Engine Service Super User“ oder „Consumer SDK User“, um die SearchVehicles API verwenden zu können. Weitere Informationen finden Sie unter Authentifizierung und Autorisierung.

SearchVehicles API verwenden

So verwenden Sie die SearchVehicles API:

  • Erstellen Sie ein SearchVehiclesRequest basierend auf der zuzuweisenden Aufgabe.
  • Rufen Sie die SearchVehicles API (vehicleService.searchVehicles) mit der erstellten Anfrage auf.
  • Verarbeiten Sie den von der API zurückgegebenen SearchVehicleResponse.

SearchVehiclesRequest-Felder

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

Field Beschreibung
parent Erforderlich. Muss das Format „Anbieter/{provider}“ haben. Der Anbieter muss die Projekt-ID des Google Cloud-Projekts sein, zu dem das Dienstkonto für diesen Aufruf gehört. Beispiel: „sample-cloud-project“.
vehicle_types Erforderlich. Der Fahrzeugtyp, der angefordert wird, entweder AUTO, TWO_WHEELER, TAXI, LKW, BICYCLE oder FUẞGÄNGER.
trip_types Erforderlich. Entweder EXKLUSIV (eine aktive Fahrt auf einmal pro Fahrer) oder GETEILT (eine oder mehrere Fahrten gleichzeitig pro Fahrer).
minimum_capacity Erforderlich. Die verbleibende Mindestkapazität des Fahrzeugs für eine neue Aufgabe – entweder für Passagiere oder für Lieferungen.
pickup_point Erforderlich. Der Abholort der Aufgabe in Breiten- und Längengraden.
dropoff_point Optional. Der Rückgabeort der Aufgabe in Breiten-/Längengradkoordinaten. Das Feld ist erforderlich, wenn trip_types den Wert TripType.SHARED enthält.
pickup_radius_meters Erforderlich. Der Radius des Suchbereichs des Fahrzeugs vom Abholpunkt in Metern.
order_by Erforderlich. Sie können Fahrzeuge auf folgende Weise bestellen:
  • PICKUP_POINT_ETA, die voraussichtliche Ankunftszeit des Fahrzeugs am Abholpunkt.
  • PICKUP_POINT_DISTANCE, die Entfernung zwischen dem Fahrzeug und dem Abholpunkt
  • DROPOFF_POINT_ETA, die voraussichtliche Ankunftszeit des Fahrzeugs, um die Fahrt an der Rückgabestelle abzuschließen.
  • PICKUP_POINT_STRAIGHT_DISTANCE, die Luftlinie zwischen dem Fahrzeug und dem Abholpunkt (nicht auf der Route).
Anzahl Erforderlich. Die maximale Anzahl der Fahrzeuge, die von 1 bis 50 zurückgegeben werden sollen.

In der Referenzdokumentation finden Sie den vollständigen Satz von SearchVehicleRequestfields.

Beispiele für SearchVehiclesRequest

In diesem Abschnitt finden Sie Beispiele für das Erstellen eines SearchVehiclesRequest-Objekts.

Angenommen, Sie haben eine Abholaufgabe, die bei RestaurantX und vier Fahrzeugen zugewiesen werden soll:

  • Fahrzeug 1 in 3.500 m Entfernung von RestaurantX
  • Fahrzeug 2, das 100 m von RestaurantX entfernt ist und eine aktive Fahrt mit einem Abhol- und einem Ausstieg an den Orten A und B hat.
  • Fahrzeug 3, 200 m von RestaurantX entfernt, mit einem Ausstieg aus großer Entfernung.
  • Fahrzeug 4 in 1.000 m Entfernung von RestaurantX

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

Ein SearchVehiclesResponse besteht aus einer Liste von VehicleMatch-Entitäten, die nach dem angegebenen Attribut "order_by" in SearchVehiclesRequest geordnet sind. Jede VehicleMatch-Entität hat die folgenden Felder:

Field 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 der neuen Aufgabe. Die voraussichtliche Ankunftszeit ist die driving-ETA.
vehicle_trips_waypoints Eine Liste der verbleibenden Wegpunkte für die aktiven Fahrten, die dem Fahrzeug derzeit zugewiesen sind, einschließlich Abhol- und Absetzpunkte.
vehicle_match_type Der Fahrttyp 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.