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 anhand der voraussichtlichen Ankunftszeit, der Entfernung oder der Geraden ermittelt. 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:
|
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.