כחלק משירות הנסיעות של Mobility on-demand, אפשר למצוא כלי רכב בקרבת מקום באמצעות השיטה SearchVehicles
.
השיטה SearchVehicles
מאפשרת לכם למצוא באפליקציה לנייד שלכם כלי רכב זמינים בקרבת מקום שמתאימים ביותר לנסיעה ספציפית או לבקשת משלוח ספציפית. ה-API SearchVehicles
מחזיר רשימה מדורגת של כלי רכב
תואמים למאפייני הנסיעה המבוקשים. הדירוג יתבצע לפי האפשרות שבחרתם: זמן הגעה משוער, מרחק או מרחק בקו ישר מנקודת האיסוף.
מאפייני חיפוש | מאפייני הרכב |
---|---|
|
|
שימוש בשיטה SearchVehicles
כדי להשתמש בתוסף SearchVehicles
, צריך לבצע את התהליך הכללי הבא:
- יוצרים
SearchVehiclesRequest
על סמך הנסיעה שרוצים להקצות. - קוראים ל-API
SearchVehicles
(vehicleService.searchVehicles
) עם של הבקשה שנוצרת. - מעבדים את הערך
SearchVehicleResponse
שהוחזר מה-API.
שדות SearchVehiclesRequest
משתמשים בשדות המאפיינים הנדרשים כדי ליצור
SearchVehiclesRequest
:
שדה | תיאור |
---|---|
הורה | נדרש. חייב להיות בפורמט providers/{provider}. הספק צריך להיות מזהה הפרויקט ב-Google Cloud שבו חשבון השירות שמבצע את הקריאה הזו הוא חבר. |
vehicle_types | נדרש. סוגי כלי הרכב המבוקשים: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE או PEDESTRIAN. |
trip_types | נדרש. "בלעדיות" (נסיעה פעילה אחת לכל נהג) או משותפת (נסיעה אחת או כמה נסיעות בכל פעם לכל נהג). |
minimum_capacity | נדרש. הקיבולת המינימלית שנותרה ברכב לנסיעה חדשה, לנוסעים או למשלוחים. |
pickup_point | נדרש. מיקום האיסוף של הנסיעה בקואורדינטות של קווי אורך ורוחב. |
dropoff_point | זה שינוי אופציונלי. נקודת היציאה של הנסיעה בקואורדינטות של קווי אורך ורוחב. השדה נדרש אם trip_types מכיל TripType.SHARED. |
pickup_radius_meters | נדרש. הרדיוס במטרים של אזור חיפוש הרכבים מנקודת האיסוף. |
order_by | נדרש. אפשר להזמין רכבים לפי אחד מהסוגים הבאים:
|
count | נדרש. המספר המקסימלי של כלי רכב להחזרה הוא 1 עד 50. |
סינון | אופציונלי. שאילתת סינון שצריך להחיל כשמחפשים כלי רכב. |
כדי לראות את הקבוצה המלאה של השדות של SearchVehicleRequest, אפשר לעיין במסמכי העזרה.
תרחישים של SearchVehiclesRequest
בקטע הזה מוצגות דוגמאות לבניית SearchVehiclesRequest
.
לדוגמה, נניח שלקוח רוצה לאסוף אותו ממסעדה X, ויש לכם ארבעה כלי רכב:
- רכב 1: במרחק 3,500 מ' ממסעדת X.
- רכב 2: במרחק 100 מ' ממסעדת X, עם נסיעה פעילה עם איסוף והורדה במיקומים א' וב'.
- רכב 3: במרחק 200 מטר מ-RestaurantX ונשארה תחנה אחת אחרונה רחוק.
- רכב 4: במרחק 1,000 מטר מ-RestaurantX.
למטה מוצגות בקשות שונות לפי הרכב שהם מחזירים.
הפונקציה מחזירה את הרכב 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
הפונקציה מחזירה את הרכב 3 והרכב 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
הפונקציה מחזירה את הרכב 2, 3 ו-4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
השדות של SearchVehiclesResponse
ה-SearchVehiclesResponse
מורכב מרשימת ישויות VehicleMatch
, שמדורגות לפי המאפיין order_by שצוין ב-SearchVehiclesRequest
. לכל ישות VehicleMatch
יש את השדות הבאים:
שדה | תיאור |
---|---|
כלי רכב | האובייקט Vehicle , כולל המאפייניםVehicle_id ו-Vehicle . |
vehicle_pickup_eta | זמן ההגעה המשוער של הרכב בנקודת האיסוף של הנסיעה החדשה. זהו זמן ההגעה המשוער לנסיעה. |
vehicle_pickup_distance_meter | המרחק במטרים בין הרכב לבין מיקום האיסוף של הנסיעה החדשה. |
vehicle_pickup_straight_line_distance_meter | המרחק של הקו הישר במטרים בין הרכב לבין מקום האיסוף של הנסיעה החדשה. |
vehicle_dropoff_eta | חותמת הזמן של זמן ההגעה המשוער של הרכב למיקום האיסוף של הנסיעה החדשה. לתשומת ליבכם, זמן ההגעה המשוער הוא זמן ההגעה לנהיגה. |
vehicle_trips_waypoints | רשימה של נקודות הציון שנותרו, כולל נקודות איסוף והורדה, בנסיעות הפעילות שמוקצות כרגע לרכב. |
vehicle_match_type | סוג הנסיעה ברכב: EXCLUSIVE, BACK_TO_BACK, CARPOOL או CARPOOL_BACK_TO_BACK. |
רשימה מלאה של השדות VehicleMatch
מופיעה כאן:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
שימוש בשאילתות סינון
SearchVehicles
ו-ListVehicles
תומכים בסינון של מאפייני רכב באמצעות שאילתת סינון.
שאילתות סינון תומכות בסינון לפי מאפיינים מותאמים אישית של כלי רכב בלבד, ואי אפשר להשתמש בהן בשדות אחרים. כשמשתמשים בשאילתת הסינון בחיפוש שכולל קריטריונים אחרים בשדה, כמו minimum_capacity
או vehicle_types
, היא פועלת כתנאי AND
.
לדוגמה, אם מחפשים רכב עם קיבולת מינימלית של 6 אנשים ומסננים לפי attributes
כמו 'מתאים לחיות מחמד', הקריטריונים יחזירו רק את הרכבים שמתאימים לחיות מחמד ויכולים לשאת לפחות 6 נוסעים.
מידע על התחביר של שאילתות סינון מופיע כאן: AIP-160 לקבלת דוגמאות. פרטים על יצירת מאפייני רכב מופיעים בקטע שדה מאפייני הרכב במדריך עדכון השדות של הרכב.
דוגמה לכלי חיפוש
בדוגמה הבאה מוסבר איך להשתמש ב-API של SearchVehicles
באמצעות ספריית gRPC של Java.
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.