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