Im Rahmen des Mobilitätsdiensts für Fahrten auf Abruf können Sie mithilfe der Methode SearchVehicles
Fahrzeuge in der Nähe finden.
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 Attribute mit den angeforderten Fahrtattributen übereinstimmen. Die Reihenfolge wird anhand Ihrer Auswahl von geschätzter Ankunftszeit, Entfernung oder Luftlinie vom Abholpunkt festgelegt.
Suchattribute | Fahrzeugattribute |
---|---|
|
|
SearchVehicles
-Methode verwenden
So verwenden Sie SearchVehicles
:
- Erstellen Sie eine
SearchVehiclesRequest
basierend auf der zuzuweisenden Fahrt. - Rufen Sie die
SearchVehicles
API (vehicleService.searchVehicles
) mit der erstellten Anfrage auf. - Verarbeite die von der API zurückgegebene
SearchVehicleResponse
.
Felder für SearchVehiclesRequests
Verwenden Sie die folgenden erforderlichen Attributfelder, um eine SearchVehiclesRequest
zu erstellen:
Feld | Beschreibung |
---|---|
Übergeordnetes Element | Erforderlich. Muss im Format „providers/{provider}“ vorliegen. Der Anbieter muss die Projekt-ID des Google Cloud-Projekts sein, zu dem das Dienstkonto gehört, das diesen Aufruf ausführt. |
vehicle_types | Erforderlich. Angeforderte Fahrzeugtypen: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE oder PEDESTRIAN. |
trip_types | Erforderlich. Entweder EXCLUSIVE (eine aktive Fahrt pro Fahrer) oder SHARED (eine oder mehrere Fahrten 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“ den Wert „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 folgenden Kriterien sortieren:
|
Anzahl | Erforderlich. Die maximale Anzahl der zurückzugebenden Fahrzeuge (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 bei Restaurant X 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 sind verschiedene Anfragen nach dem Fahrzeug zu sehen, die zurückgegeben werden.
Rückgabefahrzeug 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Gibt „Fahrzeug 3“ und „Fahrzeug 4“ zurück
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Gibt „Fahrzeug 2“, „Fahrzeug 3“ und „Fahrzeug 4“ zurück
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 Abhol- und Abgabestellen, für die aktiven Fahrten, die dem Fahrzeug derzeit zugewiesen sind. |
vehicle_match_type | Der Fahrttyp des Fahrzeugs: EXCLUSIVE, BACK_TO_BACK, CARPOOL oder CARPOOL_BACK_TO_BACK. |
Eine vollständige Liste der VehicleMatch
-Felder finden Sie unter:
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 im Leitfaden Fahrzeugfelder aktualisieren unter Feld „Fahrzeugattribute“.
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.