كجزء من خدمة الرحلات عند الطلب من Mobility، يمكنك العثور على المركبات المجاورة
باستخدام طريقة SearchVehicles
.
تتيح لك طريقة SearchVehicles
العثور على المركبات المتاحة المجاورة في
تطبيقك المتوافق مع الأجهزة الجوّالة والمخصّص للمستهلكين، والتي تناسب طلب رحلة أو طلب تسليم معيّنَين على أفضل نحو. تعرض واجهة برمجة التطبيقات SearchVehicles
قائمة مرتّبة بالمركبات التي تتوافق
سماتها مع سمات الرحلة المطلوبة. يتم ترتيب الترتيب حسب اختيارك لأي مما يلي:
الوقت المقدر للوصول أو المسافة أو مسافة الخط المستقيم من نقطة الاستلام.
سمات البحث | سمات المركبات |
---|---|
|
|
استخدام طريقة SearchVehicles
لاستخدام SearchVehicles
، اتّبِع العملية العامة التالية:
- أنشئ
SearchVehiclesRequest
استنادًا إلى الرحلة المطلوب تعيينها. - استدعاء واجهة برمجة التطبيقات
SearchVehicles
(vehicleService.searchVehicles
) باستخدام الطلب الذي تم إنشاؤه - عالج
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 | مَعلمة مطلوبة. يمكنك ترتيب المركبات حسب أحد المعايير التالية:
|
العدد | مَعلمة مطلوبة. الحد الأقصى لعدد المركبات التي سيتم عرضها من 1 إلى 50. |
تصفية | Optional. طلب بحث فلتر لتطبيقه عند البحث عن المركبات |
يمكنك الرجوع إلى المستندات المرجعية للاطّلاع على المجموعة الكاملة من حقول SearchVehicleRequest.
سيناريوهات SearchVehiclesRequest
يعرض هذا القسم أمثلة على كيفية إنشاء SearchVehiclesRequest
.
على سبيل المثال، لنفترض أنّ أحد العملاء يريد أن يتم استلامه من مطعم "أ"، ولديك أربع مركبات:
- المركبة 1: على بُعد 3500 متر من مطعم "س"
- المركبة 2: على بُعد 100 متر من مطعم "س"، وهي في رحلة نشِطة تشمل عملية نقل وإرجاع في الموقعَين "أ" و"ب".
- المركبة 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
من خلال مكتبة 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.