במסמך הזה מוסבר איך ליצור נסיעה ברצף, להגדיר את השדות הנכונים ולהקצות אותה לרכב כדי לבצע אותה. ההנחה היא שהגדרתם את ה-Fleet Engine, יצרתם כלי רכב, יש לכם אפליקציית נהיגה פעילה ואופציונלי, גם אפליקציה לצרכן. כדאי להכיר גם את תרחישי הנסיעה השונים שזמינים בנסיעות על פי דרישה. במדריכים הבאים מוסבר איך עושים את זה:
- הגדרת Fleet Engine
- יצירת רכב
- תרחישי נסיעות בסקירה הכללית של נסיעות על פי דרישה
יסודות של יצירת נסיעות
בקטע הזה מתוארים פרטי הבקשה הנדרשים ליצירת נסיעה ב-Fleet Engine. שולחים בקשת יצירה באמצעות gRPC ו-REST.
שדות של נסיעות
צריך להשתמש בשדות הבאים כדי ליצור נסיעה ב-Fleet Engine. אפשר להשתמש בשדות שונים לסוגים השונים של נסיעות: נסיעות ליעד יחיד או למספר יעדים, נסיעות ברצף או נסיעות משותפות בקבוצה. אפשר למלא את השדות האופציונליים כשיוצרים את הנסיעה, או להגדיר אותם מאוחר יותר כשמעדכנים את הנסיעה.
שם | נדרש? | תיאור |
---|---|---|
parent | כן | מחרוזת שכוללת את מזהה הפרויקט. המזהה הזה צריך להיות זהה למזהה שבו אתם משתמשים בכל השילוב של Fleet Engine, עם אותם תפקידים בחשבון השירות. |
trip_id | כן | מחרוזת שיוצרים שמזהה באופן ייחודי את הנסיעה הזו. על מזהי הנסיעות יש הגבלות מסוימות, כפי שמצוין בחומר העזר. |
trip_type | כן | מגדירים את TripType לערכים הבאים לסוג הנסיעה שיוצרים:
|
pickup_point | כן | נקודת המוצא של הנסיעה. |
יעדים ביניים | כן | נסיעות במספר יעדים בלבד: רשימת יעדי הביניים שבהם הנהג מבקר בין
האיסוף לבין ההורדה. בדומה ל- |
vehicle_waypoints | כן | נסיעות בשירות 'מעבר בין רכבים' בלבד: השדה הזה תומך בשילוב של נקודות העצירה מכמה נסיעות.
הוא מכיל את כל נקודות העצירה שנותרו ברכב שהוקצה, וגם את נקודות העצירה של האיסוף וההחזרה בנסיעה הזו. כדי להגדיר את השדה הזה,
אפשר לשלוח קריאה ל- |
number_of_passengers | לא | מספר הנוסעים בנסיעה. |
dropoff_point | לא | היעד של הנסיעה. |
vehicle_id | לא | המזהה של הרכב שהוקצה לנסיעה. |
דוגמה: יצירת נסיעה ברצף
בהמשך מוסבר איך יוצרים נסיעה ברצף ומקצים אותה לרכב. בתרחיש הזה, תהליך יצירת הנסיעה זהה לתהליך יצירת נסיעה ליעד אחד. רק בשלב מאוחר יותר יוצרים נסיעה נוספת ומקצים אותה לרכב שכבר יש לו נסיעה פעילה.
// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
Trip trip = Trip.newBuilder()
.setTripType(TripType.EXCLUSIVE)
.setPickupPoint(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.195139).setLongitude(106.820826)))
.setDropoffPoint(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.1275).setLongitude(106.6537)))
.setVehicleId(VEHICLE_ID)
.build();
// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
.setParent(parent)
.setTripId(TRIP_ID)
.setTrip(trip)
.build();
// Error handling.
try {
// Fleet Engine automatically assigns a 'waypoints' list to the trip containing
// the vehicle's current trip waypoints.
Trip createdTrip =
tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
עדכון נסיעות רצופות
כשמקצים רכב לנסיעה אחרי נסיעה, מקצים נסיעה לרכב גם אם כבר הוקצה לו רכב.
כדי שמערכת Fleet Engine תוכל לחשב את זמני ההגעה המשוער של הנסיעה ולעקוב אחריה, כל נסיעה שנוצרת ב-Fleet Engine צריכה להיות מוקצית לרכב. אפשר לעשות זאת במהלך יצירת הנסיעה או מאוחר יותר כשמעדכנים אותה.
אחרי שמקצים את הנסיעה לרכב, Fleet Engine מוסיף באופן אוטומטי את נקודות הדרך שמשויכות לנסיעות הלוך ושוב לשדות הציון ברכב. השדה remainingWaypoints
של נסיעה מכיל רשימה של כל נקודות הציון, כולל נקודות ציון מנסיעות אחרות שייכללו במסלול לפני הירידה של הנוסע.
לדוגמה, נניח שתי נסיעות הלוך ושוב: נסיעה א' ונסיעה ב'. הרכב הרים את הצרכן לנסיעה א', ובדרך ליעד ההורדה, הנהג קיבל בקשה לאסוף צרכן אחר לנסיעה הבאה, נסיעה ב'.
- אם תחייגו אל
getVehicle()
, הפונקציה תחזירremainingWaypoints
שמכילה את:
A Drop-off ← B pickup ← B Drop-off. - הערך
getTrip()
או הקריאה החוזרתonTripRemainingWaypointsUpdated
של Trip A מחזירהremainingWaypoints
שמכילים:
נטישה. getTrip()
או הפונקציה הלא פוליגונמיתonTripRemainingWaypointsUpdated
של נסיעה B מחזירות אתremainingWaypoints
שמכיל את:
A Drop-off → B Pickup → ו-B Drop-off.