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:
|
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.