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

كجزء من خدمة الرحلات عند الطلب من 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 مَعلمة مطلوبة. "حصرية" (رحلة نشطة واحدة في الوقت لكل سائق) أو مشترَكة (رحلة واحدة أو عدة رحلات في الوقت نفسه لكل سائق).
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. طلب بحث فلتر يتم تطبيقه عند البحث عن مركبات

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

سيناريوهات طلب SearchVehiclesRequest

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

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

  • المركبة 1: على بُعد 3500 متر من مطعم "س"
  • المركبة 2: على بُعد 100 متر من مطعم RestaurantX مع رحلة نشطة مع خدمة استلام الطلب واذهب إلى الموقعين "أ" و"ب".
  • المركبة 3: على بُعد 200 متر من مطعم "س"، وتتوفّر عملية تسليم واحدة متبقّية في مكان بعيد جدًا.
  • المركبة 4: على بُعد 1000 متر من مطعم RestaurantX.

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

إرجاع المركبة 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، بما في ذلك السمتَين currency_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 API من خلال مكتبة 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.

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