כחלק מהפתרון שלכם לנסיעות ולמשלוחים על פי דרישה, היכולת של תכנון ושליחה של מסלולים מאפשרת לכם למצוא נהגים בקרבת מקום באמצעות ממשק ה-API של SearchVehicles
.
באמצעות ה-API של SearchVehicles
אפשר למצוא נהגים זמינים בקרבת מקום באפליקציה לצרכנים לפתרונות לנסיעות ולמשלוחים על פי דרישה – שמתאימים בצורה הטובה ביותר למשימה כמו נסיעה או בקשת משלוח. ה-API של SearchVehicles
מחזיר
רשימה מדורגת של נהגים שתואמים למאפייני המשימה עם המאפיינים של
כלי הרכב בכלל שלכם.
מאפייני המשימה יכולים לכלול:
- נקודות איסוף והורדה
- סוגי הרכבים והנסיעות המבוקשים
- הקיבולת הנדרשת
- מאפייני תואמים אחרים שחובה לציין
מאפייני הרכב יכולים לכלול:
- המיקום הידוע האחרון של כלי הרכב
- מצב הרכב, הסוג או הקיבולת שלו
- מאפיינים מותאמים אישית אחרים
הדירוג מסודר לפי בחירתכם: זמן ההגעה המשוער, המרחק או המרחק של הקו הישר מנקודת האיסוף.
הערה: כדי להשתמש ב-SearchVehicles
API, נדרשות הרשאות משתמש-על ב-Feet Engine Service או Consumer SDK. למידע נוסף קראו את המאמר אימות והרשאה.
שימוש ב-SearchVehicles API
כדי להשתמש ב-API SearchVehicles
:
- בונים
SearchVehiclesRequest
על סמך המשימה שרוצים להקצות. - מפעילים את ה-API
SearchVehicles
(vehicleService.searchVehicles
) עם הבקשה הבנויה. - מעבדים את השדה
SearchVehicleResponse
שהוחזר מה-API.
שדות SearchVehiclesRequest
כדי ליצור SearchVehiclesRequest
, משתמשים בשדות החובה הבאים של מאפייני:
שדה | תיאור |
---|---|
parent | נדרש. חייב להיות בספקי הפורמט/{provider}. הספק צריך להיות מזהה הפרויקט (לדוגמה, sample-cloud-project) של הפרויקט ב-Google Cloud שבו חבר חשבון השירות שמבצע את הקריאה הזו. |
vehicle_types | נדרש. סוגי הרכבים המבוקשים: AUTO , TWO_WHEELER , TAXI , TRUCK , BICYCLE או PEDESTRIAN. |
trip_types | נדרש. בלעדית (נסיעה פעילה אחת לכל נהג) או נסיעה משותפת (נסיעה אחת או כמה נסיעות בכל פעם לכל נהג). |
minimum_capacity | נדרש. הקיבולת המינימלית שנותרה ברכב לצורך משימה חדשה, לנוסעים או למשלוחים. |
pickup_point | נדרש. מיקום האיסוף של המשימה בקואורדינטות של קווי אורך ורוחב. |
dropoff_point | אפשרות. מיקום ההורדה של המשימה בקואורדינטות של קווי אורך ורוחב. השדה חובה אם המאפיין triptypes מכיל את TripType.SHARED. |
pickup_radius_meters | נדרש. הרדיוס במטרים של אזור חיפוש הרכבים מנקודת האיסוף. |
order_by | נדרש. אפשר להזמין כלי רכב לפי אחת מהאפשרויות הבאות:
|
ספירה | נדרש. המספר המקסימלי של כלי רכב שניתן להחזיר מ-1 עד 50. |
כדי לראות את הקבוצה המלאה של SearchVehicleRequestfields, עיינו במסמכי התיעוד.
דוגמאות ל-SearchVehiclesRequest
בקטע הזה מוצגות דוגמאות לבניית SearchVehiclesRequest
.
לדוגמה, נניח שיש לכם משימת איסוף שמוקצית ב-RestaurantX ובארבעה כלי רכב:
- רכב 1, במרחק 3,500 מ' ממסעדה X.
- רכב 2, שנמצא במרחק 100 מ' מ-RestaurantX, עם נסיעה פעילה עם איסוף והורדה במיקומים A ו-B.
- רכב 3, שנמצא במרחק 200 מ' מ-RestaurantX ונשאר בו נקודת עצירה אחת רחוקה מאוד.
- רכב 4, במרחק 1,000 מ' ממסעדה X.
השדה 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
שדות תגובה של SearchVehicles
השדה SearchVehiclesResponse
כולל רשימה של VehicleMatch
ישויות, המדורגות לפי המאפיין order_by שצוין ב-SearchVehiclesRequest
.
לכל ישות של VehicleMatch
יש את השדות הבאים:
שדה | תיאור |
---|---|
כלי רכב | האובייקט Vehicle , כולל המאפיינים Automotive_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.