تخطيط مسار

في بعض الأحيان، قد ترغب في تخطيط المسار الذي يوفره تطبيقك للسائقين. إنّ استخدام رمز مميّز للمسار من Routes API (أو Routes Preferred API) يمكن أن يساعدك في تحديد شيئين لمسارك المخطّط له:

  • خط متعدد للمسار

  • أهداف مسارك

على سبيل المثال، إليك بعض الأمثلة على أهداف التوجيه التي قد تكون لديك:

  • تقليل الوقت اللازم للتسليم: قد يرغب مالك نشاط تجاري يقدّم الطعام في تقليل الوقت الذي يستغرقه توصيل الطعام.

  • تقليل وقت السفر أو استهلاك الوقود: قد ترغب شركات الخدمات اللوجستية في تحسين كفاءة السائقين وتقليل تكاليف الوقود.

  • تقليل الوقت المستغرق للوصول إلى الوجهة: قد تحتاج عملية إرسال الخدمات إلى تقليل الوقت الذي يستغرقه وصول العاملين إلى طلب مهمة.

  • تقليل التكاليف وتحسين الأمان: قد يرغب نشاط تجاري يقدّم خدمات مشاركة الرحلات من العثور على مسار يكلف أقل للركاب ويتجنب مناطق معينة لأسباب السلامة.

لمزيد من المعلومات حول تخطيط مسار باستخدام رمز مميَّز للمسار، يمكنك الاطّلاع على مقالة طلب رمز مميّز للمسار.

أهمية استخدام رمز مميَّز للمسار لأهداف المسار

باستخدام الرمز المميز للمسار من Routes أو Routes Preferred API، يمكنك التحكم أكثر في المسار المتوفر:

  • خطِّط للمسار مسبقًا لتستخدمه حزمة تطوير البرامج (SDK) للتنقّل متى أمكن ذلك.

  • اختيار أفضل مسار لاستخدامه من خلال حزمة تطوير البرامج (SDK) للتنقّل. إذا طلبت الرموز المميّزة للمسار عند إنشاء المسارات في واجهة برمجة تطبيقات المسارات، ستحصل على رمز مميّز للمسار لكل مسار يتم إنشاؤه. يمكنك بعد ذلك اختيار الرمز المميز للمسار الذي تريد استخدامه عند تمريره إلى حزمة SDK للتنقل.

  • تقدير السعر مسبقًا، بما في ذلك تقديرات الوقت المقدّر للوصول والمسافة على الرغم من أن التكلفة والوقت الفعليين قد يختلفان، إلا أن هذا التقدير يقلل من الفجوة بين تكلفة المسار المتوقعة والفعلية.

  • تحديد أهداف مسارات أكثر تقدّمًا، مثل التوجيه البيئي أو المسار الأقصر.

طريقة عمل الرموز المميّزة للمسار في Routes API

يمكنك استخدام Routes API أو Routes Preferred API لتخطيط المسار باستخدام أهداف المسار. تعرض Routes API رمزاً مميزًا للمسار يمكنك تمريره إلى حزمة تطوير البرامج (SDK) الخاصة بالتنقل لتحديد كيفية توجيه مركبتك.

إليك ما يحدث عند طلب رمز مميّز للمسار من Routes API واستخدامه:

  1. تعرض Routes API رمزًا مميّزًا للمسار مشفّرًا يتضمّن الخطوط المتعدّدة للمسار وأهداف المسار.

  2. تمرِّر الرمز المميّز للمسار إلى حزمة تطوير البرامج (SDK) للتنقّل.

  3. وتعمل حزمة تطوير البرامج (SDK) للتنقّل على استرداد المسار، أو إذا كان المسار غير متاح بسبب تغيُّر الظروف، فإنها تسترد أفضل مسار مطابق.

  4. أثناء قيادة المسار، إذا تغيرت حركة المرور أو أحوال الطريق الأخرى، أو إذا انحرفت مركبة عن المسار المخطط له، تحاول المسارات المعدلة باستمرار مطابقة أفضل مسار بناءً على أهداف المسار في الرمز المميز.

تزيد هذه العملية من مدى قرب المسار الفعلي من المسار المخطط له.

سبب عدم اتباع المسار المخطط له بالضبط

فكر في أهداف المسار والمسار المخطط له كإرشادات يجب اتباعها: وهي ليست توجيهية. قد ترى فرقًا بين المسار المخطط له والمسار الذي يوفره التنقل الإرشادي بسبب الاختلافات في حالات الطريق، أو موقع البدء، أو غير ذلك من المعلمات التي تغيرت منذ أن أنشأت المسار المخطط له. قد يؤدي هذا الاختلاف إلى عدم تطابق بين أهدافك المخططة والفعلية للمسافة والوقت المقدر للوصول، من بين صفات مهمة أخرى للرحلة.

تخطيط مسار باستخدام رمز مميَّز للمسار

يمكنك التخطيط لمسار عن طريق إنشاء رمز مميز للمسار ثم تمريره إلى حزمة SDK للتنقل، كما هو موضح في الخطوات التالية:

الخطوة 1: إنشاء رمز مميّز للمسار باستخدام Routes أو Routes Preferred API

  1. اطلب رمزًا مميزًا للمسار من خلال إحدى الطرق التالية:

  2. يمكنك إعداد طلب المسار لاستيفاء متطلبات استخدام الرمز المميّز للمسار:

    • ضبط travel_mode على DRIVING
    • ضبط routing_preference على TRAFFIC_AWARE أو TRAFFIC_AWARE_OPTIMAL
    • عدم استخدام نقاط الطريق عبر نقاط الطريق

الخطوة 2: تمرير الرمز المميّز للمسار إلى حزمة تطوير البرامج (SDK) للتنقّل

  1. تخزين الرمز المميّز للمسار: في حزمة تطوير البرامج (SDK) للتنقّل، يمكنك إعداد سلسلة لتخزين الرمز المميّز للمسار. مثال:

    let routeToken = "route token returned by Routes API"

    مثال على رمز مميّز للمسار الذي تم إرجاعه:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. مرِّر الرمز المميّز للمسار إلى حزمة تطوير البرامج (SDK) الخاصة بالتنقل باستخدام طريقة mapView.navigator setDestinations، مع تحديد نقاط المسارات نفسها للوجهة التي استخدمتها عند إنشاء الرمز المميّز للمسار:

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

تعرض الطريقة Navigator.setDestinations حالة الطلب. إذا تم العثور على مسار من موقع المستخدم إلى الوجهة المحددة، سيتم عرضهRouteStatus.OK.

لمزيد من المعلومات عن هذه الطريقة، يُرجى الاطّلاع على Navigator.setDestinations.

مثال

توضح أمثلة التعليمات البرمجية التالية كيفية استرداد مسار مخطط له.

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){...}];

كيفية تفاعل الرموز المميّزة للمسار وحزمة تطوير البرامج (SDK) للتنقّل

إليك كيفية تفاعل المسار الذي تم إنشاؤه من خلال حزمة تطوير البرامج (SDK) للتنقّل مع المسار المخطَّط له في الرمز المميّز للمسار:

  • لإلغاء أي وجهات تم ضبطها مسبقًا.

  • تستخدم الموقع الجغرافي لبدء المركبة.

  • تعديل ظروف الطريق وحركة المرور. اطّلِع على سبب عدم اتّباع المسار المخطّط له بالضبط.

  • يتجاهل الخيارات التالية المتعلقة بالتوجيه على أنّها غير ضرورية:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • المتابعات:

    • الخيارات ذات الصلة بنقاط المسار، مثل الخيار المفضّل على جانب الطريق.

    • أهداف المسار: إذا كان على SDK للتنقل ضبط المسار الذي تم إرجاعه، فإنها تستخدم أهداف المسار التي حددتها عند طلب الرمز المميز للمسار. لهذا السبب، يجب استخدام الخيارات نفسها المتعلقة بنقطة الطريق التي حدّدتها في Routes API.