מתבצע חיפוש של נהגים בקרבת מקום

במסגרת הפתרון לנסיעות ולמשלוחים על פי דרישה, היכולת 'תכנון מסלול ושליחה' מאפשרת לכם למצוא נהגים בסביבה באמצעות ממשק API של SearchVehicles.

בעזרת ה-API של SearchVehicles תוכלו למצוא נהגים זמינים בקרבת מקום באפליקציה לצרכנים בנושא נסיעות ומשלוחים על פי דרישה, שמתאימים בצורה הטובה ביותר למשימה כמו נסיעה או בקשת משלוח. ה-API של SearchVehicles מחזיר רשימה מדורגת של נהגים שתואמים למאפייני המשימה עם מאפיינים של כלי הרכב בכלל הרכב שלכם.

מאפייני המשימה יכולים לכלול:

  • מיקומי איסוף והורדה
  • סוגי הרכב והנסיעה המבוקשים
  • הקיבולת הנדרשת
  • מאפייני התאמה נדרשים אחרים

מאפייני הרכב יכולים לכלול:

  • המיקום האחרון הידוע של כלי הרכב
  • המצב, הסוג או הקיבולת של הרכב
  • מאפיינים מותאמים אישית אחרים

הדירוג נקבע לפי זמן ההגעה המשוער, המרחק או המרחק של הקו הישר מנקודת האיסוף.

לתשומת ליבכם: כדי להשתמש ב-API SearchVehicles, צריכות להיות לכם הרשאות של משתמש סופר-משתמש ב-Fleet Engine או משתמש SDK ב-Fleet Engine. למידע נוסף, ראו אימות והרשאה.

שימוש ב-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 זה שינוי אופציונלי. מיקום היציאה של המשימה בקואורדינטות של קווי אורך ורוחב. השדה נדרש אם trip_types מכיל TripType.SHARED.
pickup_radius_meters נדרש. הרדיוס במטרים של אזור חיפוש הרכבים מנקודת האיסוף.
order_by נדרש. אפשר להזמין רכבים לפי אחד מהסוגים הבאים:
  • PICKUP_POINT_ETA, זמן ההגעה המשוער לרכב בנקודת האיסוף.
  • PICKUP_POINT_DISTANCE, המרחק בין הרכב לנקודת האיסוף.
  • DROPOFF_POINT_ETA, זמן ההגעה המשוער לרכב כדי להשלים את הנסיעה בנקודת ההורדה.
  • PICKUP_POINT_STRAIGHT_DISTANCE, מרחק הקו הישר (לא במסלול) בין הרכב לנקודת האיסוף.
ספירה נדרש. המספר המקסימלי של כלי רכב שצריך להחזיר מ-1 עד 50.

בחומרי העזר תוכלו לראות את הקבוצה המלאה של SearchVehicleRequestfields.

דוגמאות ל-SearchVehiclesRequest

בקטע הזה מוצגות דוגמאות לבניית SearchVehiclesRequest.

לדוגמה, נניח שיש לכם משימת איסוף ב-RestaurantX ובארבעה כלי רכב:

  • רכב 1, שנמצא במרחק 3,500 מטר מ-RestaurantX.
  • רכב 2, שנמצא במרחק 100 מטר ממסעדת RestaurantX, עם נסיעה פעילה עם איסוף והורדה במיקומים 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.