Im Rahmen des Mobility-on-Demand-Fahrdienstes kannst du Fahrzeuge in der Nähe finden
mithilfe der Methode SearchVehicles
.
Mit der Methode SearchVehicles
können Sie in Ihrer mobilen App für Endnutzer verfügbare Fahrzeuge in der Nähe finden, die für eine bestimmte Fahrt oder einen bestimmten Lieferauftrag am besten geeignet sind. Die SearchVehicles
API gibt eine Rangliste der Fahrzeuge zurück, deren
mit den angeforderten Fahrtattributen übereinstimmen. Die Reihenfolge wird anhand Ihrer Auswahl von geschätzter Ankunftszeit, Entfernung oder Luftlinie vom Abholpunkt festgelegt.
Suchattribute | Fahrzeugattribute |
---|---|
|
|
Methode SearchVehicles
verwenden
So verwenden Sie SearchVehicles
:
- Erstellen Sie basierend auf der zuzuweisenden Fahrt 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.
Felder für SearchVehiclesRequests
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 des Google Cloud-Projekts sein, in dem das Dienstkonto, das diesen Aufruf ausführt, Mitglied ist. |
vehicle_types | Erforderlich. Angeforderte Fahrzeugtypen: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE oder PEDESTRIAN. |
trip_types | Erforderlich. Entweder EXKLUSIV (eine aktive Fahrt pro Fahrer) oder GETEILT (eine oder mehrere Fahrten gleichzeitig und pro Fahrer). |
minimum_capacity | Erforderlich. Die verbleibende Mindestkapazität des Fahrzeugs für eine neue Fahrt, entweder für Fahrgäste oder für Lieferungen. |
pickup_point | Erforderlich. Der Abholort der Fahrt in Breiten-/Längengradkoordinaten. |
dropoff_point | Optional. Der Zielort der Fahrt in Breiten-/Längengradkoordinaten. Das Feld ist erforderlich, wenn trip_types „TripType.SHARED“ enthält. |
pickup_radius_meters | Erforderlich. Der Radius des Suchbereichs für Fahrzeuge in Metern vom Abholpunkt. |
order_by | Erforderlich. Sie können Fahrzeuge nach einer der folgenden Optionen sortieren:
|
Anzahl | Erforderlich. Die maximale Anzahl der zurückzugebenden Fahrzeuge von 1 bis 50. |
Filter | Optional: Eine Filterabfrage, die bei der Suche nach Fahrzeugen angewendet werden soll. |
Eine vollständige Liste der Felder von SearchVehicleRequest finden Sie in der Referenzdokumentation.
Szenarien für SearchVehiclesRequests
In diesem Abschnitt finden Sie Beispiele für die Erstellung einer SearchVehiclesRequest
.
Angenommen, ein Kunde möchte im RestaurantX abgeholt werden. und Sie haben vier Fahrzeuge:
- Fahrzeug 1: 3.500 m von Restaurant X entfernt.
- Fahrzeug 2: 100 m vom Restaurant X entfernt, mit einer aktiven Fahrt mit Abhol- und Absetzvorgang an den Standorten A und B.
- Fahrzeug 3: 200 m vom Restaurant X entfernt, mit einer verbleibenden Fahrt, die sehr weit entfernt ist.
- Fahrzeug 4: 1.000 m von Restaurant X entfernt.
Im Folgenden sehen Sie verschiedene Anfragen nach dem Fahrzeug, das sie zurückgeben.
Rückgabefahrzeug 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Fahrzeug 3 und Fahrzeug 4 werden zurückgegeben
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Fahrzeug 2, 3 und 4 werden zurückgegeben
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
Felder in „SearchVehiclesResponse“
Ein SearchVehiclesResponse
besteht aus einer Liste von VehicleMatch
-Entitäten, die nach dem angegebenen Attribut „order_by“ in der SearchVehiclesRequest
sortiert sind. 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 Fahrt. Dies ist die voraussichtliche Ankunftszeit mit dem Auto. |
vehicle_pickup_distance_meter | Die Entfernung in Metern zwischen dem Fahrzeug und dem Abholort der neuen Fahrt. |
vehicle_pickup_straight_line_distance_meter | Die Luftlinie zwischen dem Fahrzeug und dem Abholort der neuen Fahrt in Metern. |
vehicle_dropoff_eta | Der Zeitstempel der voraussichtlichen Ankunftszeit des Fahrzeugs am Abholort der neuen Fahrt. Die geschätzte Ankunftszeit ist die geschätzte Ankunftszeit für Pkw. |
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. |
Eine vollständige Liste der VehicleMatch
-Felder finden Sie hier:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
Filterabfragen verwenden
SearchVehicles
und ListVehicles
unterstützen das Filtern nach Fahrzeugattributen mithilfe einer Filterabfrage.
Bei Filterabfragen ist NUR die Filterung nach benutzerdefinierten Attributen für Fahrzeuge möglich. Sie können nicht für andere Felder verwendet werden. Wenn sie in einer Suche verwendet wird, die andere Feldkriterien wie minimum_capacity
oder vehicle_types
enthält, fungiert die Filterabfrage als AND
-Klausel.
Wenn Sie beispielsweise nach einem Fahrzeug mit einer Mindestkapazität von 6 Personen suchen und eine attributes
wie „haustierfreundlich“ filtern, werden nur Fahrzeuge zurückgegeben, die sowohl haustierfreundlich sind als auch mindestens 6 Personen befördern können.
Beispiele für die Syntax von Filterabfragen finden Sie unter AIP-160. Weitere Informationen zum Erstellen von Fahrzeugattributen finden Sie unter Fahrzeuge im Leitfaden Fahrzeugfelder aktualisieren.
Beispiel für SearchVehicles
Im folgenden Beispiel wird gezeigt, wie Sie die SearchVehicles
API mit der Java gRPC-Bibliothek verwenden.
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.