Im Rahmen deiner On-demand Rides and Deliveries-Lösung können Sie mit der Funktion „Routenplanung“ und „Routenplanung“ Fahrer in der Nähe finden, indem Sie eine SearchVehicles
API bereitstellen.
Mit der SearchVehicles
API kannst du in der On-Demand-Nutzer-App „Rides and Deliveries“ nach verfügbaren Fahrern in der Nähe suchen, 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 Aufgabenattributen mit Attributen von Fahrzeugen in Ihrer Flotte entsprechen.
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 Entfernung in einer geraden Linie vom Abholpunkt festgelegt.
Beachten Sie, dass Sie die Berechtigungen eines Fleet Engine Service-Superuser oder Consumer SDK-Nutzers haben müssen, 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 basierend auf der zuzuweisenden Aufgabe eine
SearchVehiclesRequest
. - Rufen Sie die
SearchVehicles
API (vehicleService.searchVehicles
) mit der erstellten Anfrage auf. - Verarbeiten Sie die
SearchVehicleResponse
, die von der API zurückgegeben wurden.
SearchVehiclesRequest-Felder
Verwenden Sie die folgenden Pflichtfelder für ein SearchVehiclesRequest
:
Field | Beschreibung |
---|---|
parent | 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:
|
Anzahl | Erforderlich. Die maximale Anzahl der zurückzugebenden Fahrzeuge von 1 bis 50. |
Eine vollständige Liste der SearchVehicleRequestfields finden Sie in der Referenzdokumentation.
SearchVehiclesRequest-Beispiele
Dieser Abschnitt enthält Beispiele zum Erstellen einer SearchVehiclesRequest
.
Angenommen, Sie haben eine Abholaufgabe bei RestaurantX und vier Fahrzeugen zugewiesen:
- Fahrzeug 1 in 3.500 m Entfernung von RestaurantX.
- Fahrzeug 2, das 100 m von RestaurantX entfernt ist und eine aktive Fahrt mit Zu- und Ausstieg an den Orten A und B hat.
- Fahrzeug 3, das 200 m von RestaurantX entfernt ist und noch ein Ausstieg in großer Entfernung entfernt ist.
- 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
Ein SearchVehiclesResponse
besteht aus einer Liste von VehicleMatch
-Entitäten, die nach dem angegebenen order_by-Attribut in der SearchVehiclesRequest
sortiert 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 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.