البحث عن مركبات

كجزء من خدمة الرحلات عند الطلب في Mobility، يمكنك العثور على المركبات القريبة باستخدام طريقة SearchVehicles.

تتيح لك طريقة SearchVehicles العثور على المركبات المتاحة القريبة في تطبيق المستهلك على الأجهزة الجوّالة والتي تكون الأنسب لطلب توصيل أو رحلة معيّنة. تعرض واجهة برمجة التطبيقات SearchVehicles قائمة مرتّبة بالمركبات التي تتطابق سماتها مع سمات الرحلة المطلوبة. يتم ترتيب النتائج حسب اختيارك للوقت المقدّر للوصول أو المسافة أو المسافة المستقيمة من نقطة الاستلام.

سمات البحث سمات المركبات
  • مواقع الاستلام والتسليم
  • أنواع المركبات والرحلات المطلوبة
  • السعة المطلوبة
  • سمات المطابقة الأخرى المطلوبة
  • آخر موقع جغرافي معروف للمركبة
  • حالة المركبة أو نوعها أو سعتها
  • سمات مخصّصة أخرى

استخدام طريقة SearchVehicles

لاستخدام SearchVehicles، اتّبِع الخطوات العامة التالية:

  1. أنشئ SearchVehiclesRequest استنادًا إلى الرحلة التي سيتم تعيينها.
  2. استدعاء واجهة برمجة التطبيقات SearchVehicles (vehicleService.searchVehicles) باستخدام الطلب الذي تم إنشاؤه
  3. عالج SearchVehicleResponse الذي تم عرضه من واجهة برمجة التطبيقات.

حقول SearchVehiclesRequest

استخدِم حقول السمات المطلوبة التالية لإنشاء SearchVehiclesRequest:

الحقل الوصف
أحد الوالدَين مَعلمة مطلوبة. يجب أن يكون بالتنسيق providers/{provider}. يجب أن يكون مقدّم الخدمة هو رقم تعريف مشروع Google Cloud الذي ينتمي إليه حساب الخدمة الذي يُجري هذا الطلب.
vehicle_types مَعلمة مطلوبة. أنواع المركبات المطلوبة، إما AUTO أو TWO_WHEELER أو TAXI أو TRUCK أو BICYCLE أو PEDESTRIAN
trip_types مَعلمة مطلوبة. إما EXCLUSIVE (رحلة نشطة واحدة في كل مرة لكل سائق) أو SHARED (رحلة واحدة أو عدة رحلات في كل مرة لكل سائق).
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.
تصفية Optional. طلب فلترة يتم تطبيقه عند البحث عن المركبات
maximum_staleness Optional. يؤدي هذا الفلتر إلى حصر البحث في المركبات التي أرسلت إشعارات بشأن الموقع الجغرافي إلى Fleet Engine خلال المدة المحدّدة. إذا لم يتم ضبط هذا الحقل، سيستخدم الخادم خمس دقائق كقيمة تلقائية.

يُرجى الرجوع إلى المستندات المرجعية للاطّلاع على المجموعة الكاملة من حقول SearchVehicleRequest.

سيناريوهات SearchVehiclesRequest

يعرض هذا القسم أمثلة على كيفية إنشاء SearchVehiclesRequest.

على سبيل المثال، لنفترض أنّ أحد العملاء يريد أن يتم نقله من "مطعم س"، ولديك أربع مركبات:

  • المركبة 1: على بُعد 3,500 متر من RestaurantX.
  • المركبة 2: على بُعد 100 متر من RestaurantX في رحلة نشطة مع نقطة التقاء ونقطة نزول في الموقعَين "أ" و"ب".
  • المركبة 3: على بُعد 200 متر من "مطعم س"، مع تبقّي عملية توصيل واحدة بعيدة جدًا.
  • المركبة 4: على بُعد 1000 متر من RestaurantX.

يعرض ما يلي طلبات مختلفة حسب المركبة التي يتم عرضها.

Returns Vehicle 4

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
    

تعرض المركبتَين 3 و4

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
    

تعرض المركبات 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

للحصول على قائمة كاملة بحقول VehicleMatch، يُرجى الاطّلاع على:

استخدام طلبات البحث الخاصة بالفلترة

تتيح السمتان SearchVehicles وListVehicles فلترة سمات المركبات باستخدام طلب فلترة.

لا تتيح طلبات البحث المفلترة سوى الفلترة حسب السمات المخصّصة للمركبات، ولا يمكن استخدامها لحقول أخرى. عند استخدامها في عملية بحث تتضمّن معايير حقول أخرى، مثل minimum_capacity أو vehicle_types، يعمل طلب البحث الخاص بالفلتر كعبارة AND.

على سبيل المثال، إذا بحثت عن مركبة تتّسع لـ 6 ركّاب على الأقل وفلترت attributes مثل "يُسمح باصطحاب الحيوانات الأليفة"، ستعرض معاييرك فقط المركبات التي يُسمح فيها باصطحاب الحيوانات الأليفة والتي تتّسع لـ 6 ركّاب على الأقل.

للاطّلاع على بنية طلب البحث عن الفلتر، يُرجى مراجعة AIP-160 للحصول على أمثلة. للحصول على تفاصيل حول إنشاء سمات المركبات، يُرجى الاطّلاع على حقل سمات المركبات في دليل تعديل حقول المركبات.

مثال على SearchVehicles

يوضّح المثال التالي كيفية استخدام واجهة برمجة التطبيقات SearchVehicles باستخدام مكتبة Java gRPC. للاطّلاع على قائمة كاملة باللغات المتوافقة، يُرجى مراجعة مكتبات برامج خدمات الرحلات عند الطلب.

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.

الخطوات التالية