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

كجزء من خدمة رحلات التنقّل عند الطلب، يمكنك العثور على المركبات القريبة منك باستخدام طريقة 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.

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

  • المركبة 1: على بُعد 3500 متر من RestaurantX
  • المركبة 2: على بُعد 100 متر من RestaurantX، وهي في رحلة نشطة تتضمّن عملية استلام وتوصيل في الموقعَين الجغرافيَين A وB.
  • المركبة 3: على بُعد 200 متر من RestaurantX مع نقطة تسليم واحدة متبقية بعيدة جدًا.
  • المركبة 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.

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