כחלק מהפתרון לנסיעות ולמשלוחים על פי דרישה, תכנון מסלול ושליחה
יכולת למצוא נהגים בקרבת מקום באמצעות ממשק API של SearchVehicles
.
ממשק ה-API של SearchVehicles
מאפשר לכם למצוא נהגים זמינים בקרבת מקום
אפליקציית צרכנים של הפתרון בנושא נסיעות ומשלוחים על פי דרישה שהכי מתאימה למשימה
למשל, נסיעה או בקשת משלוח. ה-API SearchVehicles
מחזיר
רשימה מדורגת של מניעים שתואמים למאפייני המשימה ולמאפיינים
של כלי הרכב בכלל שלכם.
מאפייני המשימה יכולים לכלול:
- מיקומי איסוף והורדה
- סוגי הרכב והנסיעה המבוקשים
- הקיבולת הנדרשת
- מאפייני התאמה נדרשים אחרים
מאפייני הרכב יכולים לכלול:
- המיקום האחרון הידוע של כלי הרכב
- המצב, הסוג או הקיבולת של הרכב
- מאפיינים מותאמים אישית אחרים
הדירוג מסודר לפי זמן ההגעה המשוער, מרחק או קו ישר המרחק מנקודת האיסוף.
לתשומת ליבך, צריך להיות לך משתמש SDK מסוג Super User או Consumer SDK ב-Fleet Engine.
הרשאות לשימוש ב-API של SearchVehicles
. מידע נוסף זמין במאמר הבא:
אימות והרשאה.
שימוש ב-SearchVehicles API
כדי להשתמש ב-API של SearchVehicles
:
- בנייה של
SearchVehiclesRequest
על סמך המשימה שרוצים להקצות. - קריאה ל-API של
SearchVehicles
(vehicleService.searchVehicles
) עם הבקשה הבנויה. - מעבדים את ה-
SearchVehicleResponse
שהוחזרו מה-API.
שדות SearchVehiclesRequest
משתמשים בשדות המאפיינים הנדרשים כדי ליצור
SearchVehiclesRequest
:
שדה | תיאור |
---|---|
הורה | נדרש. הן חייבות להיות של ספקי הפורמט/{provider}. הספק חייב להיות מזהה הפרויקט (לדוגמה, sample-cloud-project) של הפרויקט ב-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. |
אפשר לעיין במסמכי העזרה כדי לראות את הקבוצה המלאה של SearchVehicleRequestfields.
דוגמאות ל-SearchVehiclesRequest
בקטע הזה מוצגות דוגמאות לבניית SearchVehiclesRequest
.
לדוגמה, נניח שיש לך משימת איסוף שתוקצה ל-RestaurantX וארבעה כלי רכב:
- רכב 1, שנמצא במרחק 3,500 מטר מ-RestaurantX.
- רכב 2, שנמצא במרחק 100 מטר מהמסעדה X עם נסיעה פעילה עם איסוף והורדה במיקומים A ו-B.
- רכב 3, שנמצא במרחק 200 מטר מ-RestaurantX ונשארה בו ירידה אחת רחוק מאוד.
- רכב 4, שנמצא במרחק 1,000 מטר מ-RestaurantX.
רכיב ה-SearchVehiclesRequest
הבא מחזיר את רכב 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
הפונקציה SearchVehiclesRequest
הבאה מחזירה את רכב 3 ו-4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
הפונקציה SearchVehiclesRequest
הבאה מחזירה את רכב 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. |
דוגמה לכלי חיפוש
בדוגמה הבאה תוכלו לראות איך משתמשים ב-API SearchVehicles
:
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.