במאמר הזה מוסבר איך ליצור נסיעה רצופה, להגדיר את השדות הנכונים ולהקצות אותה לרכב לביצוע. ההנחה היא שהגדרתם את 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, שמכיל:
Drop-off. - הפונקציה
getTrip()או הקריאה החוזרתonTripRemainingWaypointsUpdatedשל Trip B מחזירה את הערךremainingWaypoints, שמכיל את הערכים הבאים:
A Drop-off → B Pickup → ו-B Drop-off.