Im Rahmen des Mobility on-Demand-Fahrtdienstes können Sie mit der Methode SearchVehicles Fahrzeuge in der Nähe finden.
Mit der Methode SearchVehicles können Sie in Ihrer mobilen App für Verbraucher verfügbare Fahrzeuge in der Nähe finden, die am besten für eine bestimmte Fahrt- oder Lieferanfrage geeignet sind. Die SearchVehicles API gibt eine nach Rang geordnete Liste von Fahrzeugen zurück, deren Attribute mit den angeforderten Fahrtattributen übereinstimmen. Die Reihenfolge richtet sich nach der voraussichtlichen Ankunftszeit, der Entfernung oder der Luftlinie vom Abholort.
| Suchattribute | Fahrzeugattribute |
|---|---|
|
|
SearchVehicles-Methode verwenden
So verwenden Sie SearchVehicles:
- Erstellen Sie eine
SearchVehiclesRequestbasierend auf der zuzuweisenden Fahrt. - Rufen Sie die
SearchVehiclesAPI (vehicleService.searchVehicles) mit der erstellten Anfrage auf. - Verarbeiten Sie die von der API zurückgegebene
SearchVehicleResponse.
SearchVehiclesRequest-Felder
Verwenden Sie die folgenden erforderlichen Attributfelder, um ein SearchVehiclesRequest zu erstellen:
| Feld | Beschreibung |
|---|---|
| Übergeordnetes Element | Erforderlich. Muss das Format „providers/{provider}“ haben. 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. Die angeforderten Fahrzeugtypen, entweder 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 minimale verbleibende Kapazität des Fahrzeugs für eine neue Fahrt, entweder für Fahrgäste oder Lieferungen. |
| pickup_point | Erforderlich. Der Abholort der Fahrt in Breiten-/Längengradkoordinaten. |
| dropoff_point | Optional. Der Absetzort 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 in Metern des Fahrzeugsuchbereichs vom Abholpunkt. |
| order_by | Erforderlich. Fahrzeuge nach einem der 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. |
| maximum_staleness | Optional: Die Suche wird auf Fahrzeuge beschränkt, die innerhalb des angegebenen Zeitraums Standortaktualisierungen an die Fleet Engine gesendet haben. Wenn dieses Feld nicht festgelegt ist, verwendet der Server fünf Minuten als Standardwert. |
Eine vollständige Liste der SearchVehicleRequest-Felder finden Sie in der Referenzdokumentation.
SearchVehiclesRequest-Szenarien
In diesem Abschnitt finden Sie Beispiele für das Erstellen einer SearchVehiclesRequest.
Angenommen, ein Kunde möchte am RestaurantX abgeholt werden und Sie haben vier Fahrzeuge:
- Fahrzeug 1: 3.500 m von RestaurantX entfernt.
- Fahrzeug 2: 100 m von RestaurantX entfernt, mit einer aktiven Fahrt mit Abholung und Absetzen an den Standorten A und B.
- Fahrzeug 3: 200 m von RestaurantX entfernt, mit einer verbleibenden Lieferung, die sehr weit entfernt ist.
- Fahrzeug 4: 1.000 m von RestaurantX entfernt.
Im Folgenden werden verschiedene Anfragen nach dem Fahrzeug angezeigt, das sie zurückgeben.
Gibt Fahrzeug 4 zurück
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Gibt Fahrzeug 3 und 4 zurück
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
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 im 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, wenn diese Fahrt dem Fahrzeug jetzt zugewiesen würde. |
| 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 in Metern zwischen dem Fahrzeug und dem Abholort der neuen Fahrt. |
| vehicle_dropoff_eta | Die voraussichtliche Ankunftszeit des Fahrzeugs am Zielort, wenn diese Fahrt dem Fahrzeug in Echtzeit zugewiesen würde. |
| vehicle_trips_waypoints | Eine Liste der verbleibenden Wegpunkte, einschließlich Abhol- und Absetzpunkte, für die aktiven Fahrten, die dem Fahrzeug derzeit zugewiesen sind. |
| vehicle_match_type | Der Fahrttyp 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.
Filterabfragen unterstützen NUR das Filtern nach benutzerdefinierten Attributen für Fahrzeuge und können nicht für andere Felder verwendet werden. Wenn die Filterabfrage in einer Suche verwendet wird, die andere Feldkriterien wie minimum_capacity oder vehicle_types enthält, fungiert sie als AND-Klausel.
Wenn Sie beispielsweise nach einem Fahrzeug mit einer Mindestkapazität von 6 Personen suchen und nach einem 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 für Fahrzeugattribute.
Beispiel für „SearchVehicles“
Im folgenden Beispiel wird gezeigt, wie Sie die SearchVehicles API mit der Java-gRPC-Bibliothek verwenden. Eine vollständige Liste der unterstützten Sprachen finden Sie unter Clientbibliotheken für On-Demand-Fahrtdienste.
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.