في بعض الأحيان، قد تحتاج إلى التخطيط للمسار الذي يوفّره تطبيقك للمستخدمين. يمكن أن يساعدك استخدام رمز مميّز للمسار من Routes API أو Routes Preferred API أو Route Optimization API في تحديد أمرين للمسار المخطّط له:
خطوط متعدّدة للمسار
أهداف مسارك
على سبيل المثال، إليك بعض الأمثلة على أهداف التوجيه التي قد تكون لديك:
تقليل وقت التسليم: قد تريد مؤسسة تقدّم خدمة توصيل الطعام تقليل الوقت اللازم لتوصيل الطعام.
تقليل مدة الرحلة أو استهلاك الوقود: قد تريد شركة لوجستية تحسين كفاءة السائقين وتقليل تكاليف الوقود.
تقليل الوقت اللازم للوصول إلى الوجهة: قد تحتاج عملية إرسال الخدمة إلى تقليل الوقت اللازم لوصول المشغّلين إلى طلب الخدمة.
تقليل التكاليف وتحسين السلامة: قد تحتاج شركة مشاركة الرحلات إلى العثور على مسار أقل تكلفة للركاب وتجنُّب مناطق معيّنة لأسباب تتعلّق بالسلامة.
لمزيد من المعلومات حول تخطيط مسار باستخدام رمز مميّز للمسار، يُرجى الاطّلاع على طلب رمز مميّز للمسار في Routes API والانتقال بين الخطوط المتعددة والرموز المميزة للمسار في Route Optimization API.
لماذا يجب استخدام رمز مميّز للمسار من أجل أهداف المسار؟
باستخدام رمز مميّز للمسار من Routes API أو Routes Preferred API أو Route Optimization API، يمكنك التحكّم بشكل أكبر في المسار المقدَّم:
خطِّط لمسار مسبقًا لتستخدمه حزمة Navigation SDK عند الإمكان.
اختَر أفضل مسار لاستخدامه في حزمة تطوير البرامج للتنقّل. إذا طلبت رموزًا مميّزة للمسارات عند إنشاء مسارات في واجهة Routes API، ستحصل على رمز مميّز لكل مسار تم إنشاؤه. يمكنك بعد ذلك اختيار الرمز المميّز للمسار الذي تريد استخدامه عند تمريره إلى حزمة Navigation SDK.
تقدير السعر مسبقًا، بما في ذلك تقديرات الوقت المقدّر للوصول والمسافة مع أنّ التكلفة والوقت الفعليَّين قد يختلفان، يقلّل هذا التقدير من الفجوة بين التكلفة المتوقّعة والتكلفة الفعلية للمسار.
تحديد أهداف أكثر تقدّمًا للمسار، مثل المسار الصديق للبيئة أو المسار الأقصر
طريقة عمل رموز المسار
يمكنك استخدام Routes API أو Routes Preferred API أو Route Optimization API لتخطيط مسار باستخدام أهداف المسار. يمكنك تمرير رمز مميز للمسار تم إرجاعه من أي من واجهات برمجة التطبيقات هذه إلى حزمة تطوير البرامج (SDK) الخاصة بخدمة Navigation لتوجيه طريقة تحديد المسار لمركبتك.
إليك ما يحدث عند طلب رمز مميّز للمسار واستخدامه:
تعرض واجهة Routes API أو واجهة Routes Preferred API أو واجهة Route Optimization API رمزًا مميزًا مشفّرًا للمسار يتضمّن المضلّع المتعدد الخاص بالمسار وأهداف المسار.
يمكنك تمرير رمز مميّز للمسار إلى حزمة تطوير البرامج للتنقّل.
تستردّ حزمة تطوير البرامج للتنقّل المسار، أو تستردّ أفضل مسار مطابق إذا لم يكن المسار متاحًا بسبب تغيُّر الظروف.
أثناء القيادة على المسار، إذا تغيّرت حركة المرور أو أحوال الطريق الأخرى، أو إذا انحرفت المركبة عن المسار المخطط له، ستحاول المسارات المعدَّلة باستمرار مطابقة أفضل مسار استنادًا إلى أهداف المسار في الرمز المميز.
تساعد هذه العملية في تقريب المسار الفعلي إلى المسار المخطّط له إلى أقصى حدّ.
أسباب عدم اتّباع مسار مخطَّط له بدقة
يجب اعتبار المسار المخطط له وأهداف المسار إرشادات يجب اتّباعها، وليس تعليمات إلزامية. قد تلاحظ اختلافًا بين المسار المخطّط له والمسار الذي توفّره ميزة "التنقّل الإرشادي" بسبب الاختلافات في أحوال الطريق أو الموقع الجغرافي لنقطة البداية أو غير ذلك من المَعلمات التي تغيّرت منذ أن أنشأت المسار المخطّط له. وقد يؤدي هذا الاختلاف إلى عدم تطابق بين أهدافك المخطَّط لها والفعلية بشأن المسافة والوقت المقدَّر للوصول، بالإضافة إلى جوانب مهمة أخرى متعلّقة بالرحلة.
التخطيط لمسار باستخدام رمز مميّز للمسار
يمكنك التخطيط لمسار من خلال إنشاء رمز مميّز للمسار ثم تمريره إلى Navigation SDK، كما هو موضّح في الخطوات التالية:
الخطوة 1: إنشاء رمز مميّز للمسار باستخدام Routes API أو Routes Preferred API أو Route Optimization API
اطلب رمزًا مميزًا للمسار باستخدام إحدى الطرق التالية:
Routes API:
computeRoutes. لمزيد من المعلومات حول طلب رمز مميّز للمسار في Routes API، يُرجى الاطّلاع على احتساب مسار وطلب رمز مميّز للمسار.Routes Preferred API:
computeCustomRoutesلمزيد من المعلومات حول طلب رمز مميّز للمسار في واجهة Routes Preferred API، يُرجى الاطّلاع على تخطيط مسار.Route Optimization API:
optimizeToursأوbatchOptimizeTours. لمزيد من المعلومات حول طلب رمز مميّز للمسار في Route Optimization API، يُرجى الاطّلاع على نقل خطوط متعدّدة الأضلاع ورموز مميّزة للمسار.
إعداد طلب إلى Routes API أو Routes Preferred API لاستيفاء متطلبات استخدام رمز مميز للمسار:
- اضبط قيمة
travel_modeعلىDRIVEأوTWO_WHEELER - اضبط قيمة
routing_preferenceعلىTRAFFIC_AWAREأوTRAFFIC_AWARE_OPTIMAL - لا تستخدِم
Viaنقاط طريق
- اضبط قيمة
الخطوة 2: تمرير الرمز المميّز للمسار إلى حزمة تطوير البرامج للتنقّل
تخزين الرمز المميّز للمسار: في حزمة Navigation SDK، اضبط سلسلة لتخزين الرمز المميّز للمسار. على سبيل المثال:
String routeToken = "route token returned by Routes API";
مثال على رمز مميّز للمسار تم عرضه:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }مرِّر رمز المسار إلى حزمة تطوير البرامج (SDK) للتنقّل باستخدام طريقة
Navigator.setDestinations، مع تحديد نقاط الطريق نفسها الخاصة بالوجهة التي استخدمتها عند إنشاء رمز المسار:setDestinations(List
destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions); على سبيل المثال:
CustomRoutesOptions customRoutesOptions = CustomRoutesOptions.builder() .setRouteToken(routeToken) .setTravelMode(TravelMode.DRIVING) .build();
تعرض الطريقة Navigator.setDestinations حالة الطلب. إذا عثرت على مسار من موقع المركبة إلى الوجهة المحدّدة، ستعرضRouteStatus.OK.
لمزيد من المعلومات حول هذه الطريقة، يُرجى الاطّلاع على
Navigator.setDestinations.
مثال
يوضّح مثال الرمز البرمجي التالي كيفية تحديد مسار مُخطَّط له باستخدام رمز مميّز للمسار.
ArrayList <Waypoint> destinations = Lists.newArrayList();
Waypoint waypoint1 =
Waypoint.builder()
.setLatLng(10, 20)
.setTitle("title")
.setVehicleStopover(true)
.build();
destinations.add(waypoint1);
Waypoint waypoint2 =
Waypoint.builder()
.setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(waypoint2);
String routeToken = "route token returned by Routes API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(TravelMode.DRIVING)
.build();
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Existing flow for requesting routes.
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions, displayOptions);
كيفية تفاعل رموز المسار مع حزمة تطوير البرامج للتنقّل
في ما يلي كيفية تفاعل المسار الذي تم إنشاؤه بواسطة Navigation SDK مع المسار المخطَّط له في رمز المسار:
تتجاوز أي وجهات تم ضبطها سابقًا.
يستخدم الموقع الجغرافي لبدء تشغيل المركبة.
تتكيّف مع ظروف الطريق وحركة المرور. اطّلِع على أسباب عدم اتّباع مسار مخطَّط له بدقة.
تتجاهل الخيارات التالية المتعلّقة بالتوجيه باعتبارها غير ضرورية:
avoidsHighwaysavoidsTollsavoidsFerrieslicensePlateRestriction
المتابعون:
الخيارات المتعلّقة بنقاط الطريق، مثل خيار "الجانب المفضّل من الطريق"
أهداف المسار إذا كان على حزمة Navigation SDK تعديل المسار الذي تم عرضه، فإنّها تستخدم أهداف المسار التي حدّدتها عند طلب رمز المسار. لهذا السبب، عليك استخدام خيارات نقاط الطريق نفسها التي حدّدتها في واجهة Routes API.