في بعض الأحيان، قد تحتاج إلى تخطيط المسار الذي يقدّمه تطبيقك للمستخدمين. باستخدام رمز بديل لمسار من Routes API أو Routes Preferred API أو Route Optimization API، يمكن أن تساعدك في تحديد شيئَين للمسار المخطَّط:
خط متعدد للمسار
أهداف مسارك
على سبيل المثال، إليك بعض الأمثلة على أهداف التوجيه التي قد تكون لديك:
تقليل وقت التسليم: قد يريد النشاط التجاري الذي يقدّم خدمة توصيل الطعام تقليل الوقت الذي يستغرقه تسليم الطعام.
تقليل وقت التنقّل أو استهلاك الوقود: قد يريد نشاط تجاري في مجال الخدمات اللوجستية تحسين كفاءة سائقيه وخفض تكاليف الوقود.
تقليل الوقت المستغرَق للوصول إلى الوجهة: قد تحتاج عملية إرسال الخدمة إلى تقليل الوقت المستغرَق لنقل موظّفي التشغيل إلى طلب العمل.
خفض التكاليف وتحسين السلامة: قد يريد نشاط مشاركة الركوب العثور على مسار يقلّل من تكلفة التنقّل للركّاب ويتجنّب مناطق معيّنة لأسباب تتعلّق بالسلامة.
لمزيد من المعلومات عن تخطيط مسار باستخدام رمز مسار، اطّلِع على طلب رمز مسار في واجهة برمجة التطبيقات Routes API والخطوط المتعددة المنحنية للانتقال ورموقس المسار في واجهة برمجة التطبيقات Route Optimization API.
سبب استخدام رمز مسار لأهداف المسار
باستخدام رمز تعريف مسار من Routes API أو Routes Preferred API أو Route Optimization API، يمكنك التحكّم بشكل أكبر في المسار المقدَّم:
خطِّط لمسار مسبقًا لاستخدام حزمة تطوير البرامج (SDK) لنظام التنقّل عند الإمكان.
اختَر أفضل مسار لاستخدام حزمة تطوير البرامج (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 المسار، أو إذا لم يكن المسار متاحًا بسبب تغيُّر الظروف، تسترجع أفضل مسار مطابق.
أثناء القيادة على المسار، إذا تغيّرت حركة المرور أو أحوال الطريق الأخرى، أو إذا انحرف المركبة عن المسار المخطَّط، تحاول المسارات المعدَّلة باستمرار مطابقة أفضل مسار استنادًا إلى أهداف المسار في الرمز المميّز.
تزيد هذه العملية من مدى قرب المسار الفعلي من المسار المخطَّط له.
أسباب عدم اتّباع المسار المخطَّط بدقة
فكِّر في المسار المخطّط وأهداف المسار على أنّهما إرشادات يجب اتّباعها، فهما ليسا إلزاميَين. قد تلاحظ اختلافًا بين المسار المخطّط و المسار الذي تقدّمه ميزة "التنقّل الإرشادي" بسبب الاختلافات في حالة الطريق أو الموقع الجغرافي للنقطة المبدئية أو المَعلمات الأخرى التي تغيّرت منذ إنشاء المسار المخطّط. وقد يؤدي هذا الاختلاف إلى عدم تطابق بين أهدافك المخطّط لها والفعلية للمسافة والوقت المقدَّر للوصول، بالإضافة إلى ميزات مهمة أخرى تتعلّق بالرحلة.
تخطيط مسار باستخدام رمز مسار
يمكنك تخطيط مسار من خلال إنشاء رمز مسار ثم تمريره إلى مكتبة تنمية البرامج (SDK) Navigation، كما هو موضّح في الخطوات التالية:
الخطوة 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
علىDRIVING
أوTWO_WHEELER
. - اضبط
routing_preference
علىTRAFFIC_AWARE
أوTRAFFIC_AWARE_OPTIMAL
. - لا تستخدِم
Via
نقطة طريق.
- اضبط
الخطوة 2: تمرير الرمز المميّز للمسار إلى حزمة تطوير البرامج Navigation SDK
تخزين الرمز المميّز للمسار: في حزمة تطوير البرامج (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);
كيفية تفاعل الرموز المميّزة للمسارات وحزمة تطوير البرامج (SDK) للتنقّل
في ما يلي كيفية تفاعل المسار الذي أنشأته حزمة Navigation SDK والمسار المخطَّط في الرمز المميّز للمسار:
تلغِي أي وجهات تم ضبطها سابقًا.
يستخدم الموقع الجغرافي لنقطة انطلاق المركبة.
يتم تعديلها وفقًا لظروف الطريق وحركة المرور. اطّلِع على الأسباب المحتمَلة لعدم اتّباع المسار المخطَّط بدقة.
تجاهل الخيارات التالية المرتبطة بالتوجيه لأنّها غير ضرورية:
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
المواقع التي تتابعها:
الخيارات المتعلّقة بنقاط الطريق، مثل الإعداد المفضّل لجانب الطريق
أهداف المسار: إذا كان على حزمة SDK للتنقّل تعديل المسار الذي تم إرجاعه، ستستخدِم أهداف المسار التي حدّدتها عند طلب رمز مسار التنقّل. لهذا السبب، عليك استخدام الخيارات المتعلقة بالنقاط المرجعية نفسها التي حدّدتها في Routes API.