كجزء من خدمة الرحلات عند الطلب للتنقل، يمكنك العثور على المركبات القريبة
باستخدام الطريقة SearchVehicles
.
تتيح لك طريقة SearchVehicles
العثور على المركبات المتاحة المجاورة في
تطبيقك المتوافق مع الأجهزة الجوّالة والمخصّص للمستهلكين، والتي تناسب بشكل أفضل طلب رحلة أو طلب تسليم معيّن. تعرض واجهة برمجة التطبيقات SearchVehicles
قائمة مرتّبة من المركبات التي
تطابق سمات الرحلة المطلوبة يتم ترتيب الترتيب حسب
الاختيار بين الوقت المقدّر للوصول أو المسافة أو الخط المستقيم من نقطة الاستلام.
سمات البحث | سمات المركبات |
---|---|
|
|
استخدام الطريقة SearchVehicles
لاستخدام SearchVehicles
، يُرجى اتّباع العملية العامة التالية:
- يمكنك إنشاء
SearchVehiclesRequest
استنادًا إلى الرحلة المطلوب إسنادها. - يمكنك طلب واجهة برمجة التطبيقات
SearchVehicles
(vehicleService.searchVehicles
) باستخدام تم إنشاؤه. - معالجة
SearchVehicleResponse
التي تم عرضها من واجهة برمجة التطبيقات
حقول SearchVehiclesRequest
استخدِم حقول السمات المطلوبة التالية لإنشاء
SearchVehiclesRequest
:
الحقل | الوصف |
---|---|
عنصر رئيسي | مَعلمة مطلوبة. يجب أن يكون بتنسيق موفِّري التنسيق/{provider}. يجب أن يكون مقدّم الخدمة هو رقم تعريف المشروع الخاص بالمشروع على Google Cloud الذي ينتمي إليه حساب الخدمة الذي يجري هذه المكالمة. |
vehicle_types | مَعلمة مطلوبة. أنواع المركبات المطلوبة، إما OUT أو TWO_WHEELER أو TAXI أو TRUCK أو BICYCLE أو PEDESTRIAN |
trip_types | مَعلمة مطلوبة. "حصرية" (رحلة نشطة واحدة في الوقت لكل سائق) أو مشترَكة (رحلة واحدة أو عدة رحلات في الوقت نفسه لكل سائق). |
minimum_capacity | مَعلمة مطلوبة. تمثّل هذه السمة الحدّ الأدنى من السعة المتبقية للمركبة في رحلة جديدة، سواء كانت مخصصة للركاب أو عمليات التسليم. |
pickup_point | مَعلمة مطلوبة. موقع الركوب للرحلة بإحداثيات خطوط الطول/العرض. |
dropoff_point | اختياريّ. موقع الانسحاب للرحلة بإحداثيات خطوط الطول/العرض. يجب ملء هذا الحقل إذا كان trip_types يحتوي على TripType.SHARED. |
pickup_radius_meters | مَعلمة مطلوبة. النطاق الجغرافي بالأمتار لمنطقة البحث عن المركبات من نقطة الاستلام. |
order_by | مَعلمة مطلوبة. يمكنك طلب المركبات بإحدى الطرق التالية:
|
العدد | مَعلمة مطلوبة. الحدّ الأقصى لعدد المركبات المطلوب إرجاعها من 1 إلى 50. |
تصفية | Optional. طلب بحث فلتر يتم تطبيقه عند البحث عن مركبات |
يُرجى مراجعة المستندات المرجعية للاطّلاع على المجموعة الكاملة SearchVehicleRequest.
سيناريوهات طلب SearchVehiclesRequest
يعرض هذا القسم أمثلة حول كيفية إنشاء SearchVehiclesRequest
.
على سبيل المثال، لنفترض أن هناك عميلًا يريد أن يتم استلامه من RestaurantX، ولديك أربع مركبات:
- المركبة 1: على بُعد 3500 متر من مطعم RestaurantX.
- المركبة 2: على بُعد 100 متر من مطعم RestaurantX مع رحلة نشطة مع خدمة استلام الطلب واذهب إلى الموقعين "أ" و"ب".
- المركبة 3: على بُعد 200 متر من مطعم RestaurantX مع تسليم واحدة متبقية للغاية بعيدة للغاية.
- المركبة 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 ، بما في ذلك السمتَين 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
، يمكنك الاطّلاع على:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
استخدام طلبات البحث المفلترة
يتوافق كل من 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.