Im Rahmen des On-Demand-Mobilitätsdienstes können Sie mit der Methode SearchVehicles
Fahrzeuge in der Nähe finden.
Mit der Methode SearchVehicles
können Sie in Ihrer mobilen Verbraucher-App verfügbare Fahrzeuge in der Nähe finden, die am besten für eine bestimmte Fahrt oder einen Lieferauftrag geeignet sind. Die SearchVehicles
API gibt eine Rangliste von Fahrzeugen zurück, deren Attribute mit den angeforderten Attributen der Fahrt übereinstimmen. Die Reihenfolge der Ergebnisse richtet sich nach Ihrer Auswahl: entweder nach der geschätzten Ankunftszeit, der Entfernung oder der Entfernung per Luftlinie vom Abholort.
Attribute suchen | Fahrzeugattribute |
---|---|
|
|
SearchVehicles
-Methode verwenden
So verwenden Sie SearchVehicles
:
- Erstellen Sie ein
SearchVehiclesRequest
basierend auf der zuzuweisenden Fahrt. - Rufen Sie die
SearchVehicles
API (vehicleService.searchVehicles
) mit der erstellten Anfrage auf. - Verarbeiten Sie die von der API zurückgegebene
SearchVehicleResponse
.
Felder für SearchVehiclesRequest
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, mit dem dieser Aufruf erfolgt. |
vehicle_types | Erforderlich. Arten von angeforderten Fahrzeugen: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE oder PEDESTRIAN. |
trip_types | Erforderlich. Entweder EXCLUSIVE (ein aktiver Trip pro Fahrer) oder SHARED (ein oder mehrere Trips pro Fahrer). |
minimum_capacity | Erforderlich. Die Mindestrestkapazitä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 Abgabeort 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 das Fahrzeug in Metern ab dem Abholort. |
order_by | Erforderlich. Sortieren Sie Fahrzeuge nach einem der folgenden Kriterien:
|
Anzahl | Erforderlich. Die maximale Anzahl der zurückzugebenden Fahrzeuge (1 bis 50). |
filtern | Optional: Eine Filterabfrage, die bei der Suche nach Fahrzeugen angewendet werden soll. |
maximum_staleness | Optional: Schränkt die Suche auf Fahrzeuge ein, die innerhalb des angegebenen Zeitraums Standortaktualisierungen an Fleet Engine gesendet haben. Wenn dieses Feld nicht festgelegt ist, verwendet der Server fünf Minuten als Standardwert. |
Eine vollständige Liste der Felder für SearchVehicleRequest finden Sie in der Referenzdokumentation.
Szenarien für SearchVehiclesRequest
In diesem Abschnitt finden Sie Beispiele für die Erstellung einer SearchVehiclesRequest
.
Angenommen, ein Kunde möchte am RestaurantX abgeholt werden und Sie haben vier Fahrzeuge:
- Fahrzeug 1: 3.500 m vom RestaurantX entfernt.
- Fahrzeug 2: 100 Meter von RestaurantX entfernt mit einer aktiven Fahrt mit Abholung und Abgabe an den Orten A und B.
- Fahrzeug 3: 200 m von RestaurantX entfernt, mit einer verbleibenden Zustellung sehr weit entfernt.
- Fahrzeug 4: 1.000 m von RestaurantX entfernt.
Im Folgenden sehen Sie verschiedene Anfragen nach dem Fahrzeug, 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
Felder für SearchVehiclesResponse
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 jetzt zugewiesen würde. |
vehicle_trips_waypoints | Eine Liste der verbleibenden Wegpunkte, einschließlich Abhol- und Abgabeorten, für die aktiven Fahrten, die dem Fahrzeug derzeit zugewiesen sind. |
vehicle_match_type | Der Fahrtentyp 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 wird NUR das Filtern nach benutzerdefinierten Attributen für Fahrzeuge unterstützt. Sie können nicht für andere Felder verwendet werden. Wenn der Filter 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 nach attributes
wie „Haustierfreundlich“ filtern, werden nur Fahrzeuge zurückgegeben, die sowohl haustierfreundlich sind als auch mindestens 6 Personen befördern können.
Informationen zur Filtersyntax 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 die SearchVehicles
API mit der Java-gRPC-Bibliothek 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.