في بعض الأحيان، قد تحتاج إلى التخطيط للمسار الذي يوفّره تطبيقك للمستخدمين. يمكن أن يساعدك استخدام رمز مسار من Routes API أو Routes Preferred API أو Route Optimization API في تحديد أمرين لمسارك المخطَّط له:
خط متعدد الأضلاع للمسار
أهداف المسار
في ما يلي بعض الأمثلة على أهداف التوجيه التي قد تكون لديك:
تقليل وقت التوصيل إلى الحد الأدنى: قد تريد شركة توصيل الطعام تقليل الوقت المستغرَق لتوصيل الطعام إلى الحد الأدنى.
تقليل مدة الرحلة أو استهلاك الوقود إلى الحد الأدنى: قد تريد شركة الخدمات اللوجستية تحسين كفاءة السائقين وتقليل تكاليف الوقود.
تقليل وقت الوصول إلى الوجهة إلى الحد الأدنى: قد تريد عملية إرسال الخدمات تقليل الوقت المستغرَق لوصول المشغّلين إلى طلب وظيفة إلى الحد الأدنى.
تقليل التكاليف وتحسين السلامة: قد تريد شركة مشاركة الرحلات العثور على مسار أقل تكلفة للركاب وتجنُّب مناطق معيّنة لأسباب تتعلق بالسلامة.
لمزيد من المعلومات عن التخطيط لمسار باستخدام رمز مسار، يُرجى الاطّلاع على مقالتَي طلب رمز مسار في Routes API و نقل الخطوط المتعددة الأضلاع ورموز المسار في Route Optimization API.
أسباب استخدام رمز مسار لأهداف المسار
باستخدام رمز مسار من Routes API أو Routes Preferred API أو Route Optimization API، يمكنك التحكّم بشكل أكبر في المسار المقدَّم:
التخطيط لمسار مسبقًا لتستخدمه حزمة Navigation SDK متى أمكن ذلك
اختيار أفضل مسار لتستخدمه حزمة Navigation SDK : إذا طلبت رموز مسار عند إنشاء المسارات في Routes API، ستحصل على رمز مسار لكل مسار تم إنشاؤه. يمكنك بعد ذلك اختيار الرمز المميّز للمسار الذي تريد استخدامه عند تمريره إلى حزمة Navigation SDK.
تقدير السعر مسبقًا، بما في ذلك تقديرات الوقت المقدر للوصول و المسافة. على الرغم من أنّ التكلفة والوقت الفعليَين قد يختلفان، فإنّ هذا التقدير يقلّل الفجوة بين تكلفة المسار المتوقّعة والفعلية.
تحديد أهداف أكثر تقدّمًا للمسار، مثل التوجيه المراعي للبيئة أو الـ أقصر مسار.
آلية عمل رموز المسار
يمكنك استخدام Routes API أو Routes Preferred API أو Route Optimization API للتخطيط لمسار باستخدام أهداف المسار. يمكنك تمرير رمز مسار يتم عرضه من أيّ من واجهات برمجة التطبيقات هذه إلى حزمة Navigation SDK لتوجيه كيفية توجيه مركبتك.
إليك ما يحدث عند طلب رمز مسار واستخدامه:
تعرض Routes API أو Routes Preferred API أو Route Optimization API رمز مسار مشفّرًا يتضمّن خط المسار المتعدد الأضلاع وأهداف المسار.
يمكنك تمرير رمز المسار إلى حزمة Navigation SDK.
تستردّ حزمة Navigation SDK المسار، أو إذا لم يكن المسار متاحًا بسبب الظروف المتغيّرة، فإنّها تستردّ أفضل مسار مطابق.
أثناء قيادة المسار، إذا تغيّرت حركة المرور أو ظروف الطريق الأخرى، أو إذا انحرفت المركبة عن المسار المخطَّط له، فإنّ المسارات المعدَّلة تحاول باستمرار مطابقة أفضل مسار استنادًا إلى أهداف المسار في الرمز المميّز.
تزيد هذه العملية من مدى اقتراب المسار الفعلي من المسار المخطَّط له.
أسباب عدم اتّباع المسار المخطَّط له بدقة
اعتبِر المسار المخطَّط له وأهداف المسار بمثابة إرشادات يجب اتّباعها، فهي ليست إلزامية. قد تلاحظ اختلافًا بين المسار المخطَّط له والمسار الذي يوفّره التنقّل الموجَّه بسبب الاختلافات في ظروف الطريق أو موقع البداية أو غير ذلك من المَعلمات التي تغيّرت منذ إنشاء المسار المخطَّط له. قد يؤدي هذا الاختلاف إلى عدم تطابق بين أهدافك المخطَّط لها والفعلية للمسافة والوقت المقدر للوصول، بالإضافة إلى جوانب مهمة أخرى في الرحلة.
التخطيط لمسار باستخدام رمز مسار
يمكنك التخطيط لمسار عن طريق إنشاء رمز مسار ثم تمريره إلى حزمة Navigation SDK، كما هو موضّح في الخطوات التالية:
الخطوة 1: إنشاء رمز مسار باستخدام Routes API أو Routes Preferred API أو Route Optimization API
اطلب رمز مسار بإحدى الطرق التالية:
Routes API:
computeRoutes. لمزيد من المعلومات عن طلب رمز مسار في Routes API، يُرجى الاطّلاع على حساب مسار وطلب رمز مسار token.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
تخزين رمز المسار: في حزمة Navigation SDK، اضبط سلسلة لتخزين رمز المسار. على سبيل المثال:
String routeToken = "route token returned by Routes API";
مثال على رمز مسار تم عرضه:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }مرِّر رمز المسار إلى حزمة Navigation 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
إليك كيفية تفاعل المسار الذي أنشأته حزمة Navigation SDK والمسار المخطَّط له في رمز المسار:
تتجاوز أي وجهات تم ضبطها سابقًا.
تستخدِم موقع بداية المركبة.
تعدِّل ظروف الطريق وحركة المرور. يُرجى الاطّلاع على أسباب عدم اتّباع المسار المخطَّط له بدقة.
تتجاهل الخيارات التالية المتعلقة بالتوجيه لأنّها غير ضرورية:
avoidsHighwaysavoidsTollsavoidsFerrieslicensePlateRestriction
تتّبع:
الخيارات المتعلقة بنقطة الطريق، مثل تفضيل جانب الطريق
أهداف المسار : إذا كان على حزمة Navigation SDK تعديل المسار الذي تم عرضه، فإنّها تستخدِم أهداف المسار التي حدّدتها عند طلب رمز المسار. لهذا السبب، عليك استخدام الخيارات نفسها المتعلقة بنقطة الطريق التي حدّدتها في Routes API.