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

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