في بعض الأحيان، قد تحتاج إلى التخطيط للمسار الذي يوفّره تطبيقك للمستخدمين. يمكن أن يساعدك استخدام رمز مسار من 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، اضبط سلسلة لتخزين رمز المسار. على سبيل المثال:
let routeToken = "route token returned by Routes API"مثال على رمز مسار تم عرضه:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }مرِّر رمز المسار إلى حزمة Navigation SDK باستخدام
mapView.navigator.setDestinations. حدِّد نقاط الطريق نفسها التي استخدمتها عند إنشاء رمز المسار:mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})تعرض طريقة
Navigator.setDestinationsحالة الطلب. إذا تم العثور على مسار من موقع المستخدم إلى الوجهة المحدّدة، يتم عرضRouteStatus.OK.
سيناريوهات متعدّدة نقاط الطريق
يمكنك ضبط 25 نقطة طريق كحدّ أقصى.
لا تتيح طريقة setDestinations الرحلات التي تتضمّن نقاط طريق متعدّدة. استخدِم
continueToNextDestinationWithCompletion()
للانتقال بنقطة الطريق إلى المرحلة التالية من الرحلة.
مثال
تعرض أمثلة التعليمات البرمجية التالية كيفية استرداد مسار مخطط له.
Swift
let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!
let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
Objective-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";
[mapView.navigator setDestinations:@[waypoint1, waypoint2]
routeToken:routeToken
callback:^(GMSRouteStatus routeStatus){...}];
كيفية تفاعل رموز المسارات مع حزمة Navigation SDK
إليك كيفية تفاعل المسار الذي أنشأته حزمة Navigation SDK مع المسار المخطط له في رمز المسار:
تجاوز أي وجهات تم ضبطها سابقًا
استخدام موقع بداية المركبة
الضبط وفقًا لظروف الطريق وحركة المرور يُرجى الاطّلاع على أسباب عدم اتّباع المسار المخطط له بدقة.
تجاهُل الخيارات التالية المتعلّقة بالتوجيه لأنّها غير ضرورية:
avoidsHighwaysavoidsTollsavoidsFerrieslicensePlateRestriction
اتّباع:
الخيارات المتعلّقة بنقطة الطريق، مثل تفضيل جانب الطريق
أهداف المسار : إذا كان على حزمة Navigation SDK ضبط المسار الذي تم عرضه، فإنّها تستخدم أهداف المسار التي حدّدتها عند طلب رمز المسار. لهذا السبب، عليك استخدام الخيارات نفسها المتعلّقة بنقطة الطريق التي حدّدتها في Routes API.