تخطيط مسار

في بعض الأحيان، قد تحتاج إلى التخطيط للمسار الذي يوفّره تطبيقك للمستخدمين. يمكن أن يساعدك استخدام رمز مميّز للمسار من 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 لتخطيط مسار باستخدام أهداف المسار. يمكنك تمرير رمز مميّز للمسار تم إرجاعه من أيّ من واجهات برمجة التطبيقات هذه إلى حزمة تطوير البرامج (SDK) الخاصة بخدمة Navigation لتوجيه طريقة تحديد المسار لمركبتك.

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

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

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

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

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

تساعد هذه العملية في تحديد المسار الأقرب إلى المسار المخطّط له.

أسباب عدم اتّباع مسار مُخطَّط له بدقة

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

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

يمكنك التخطيط لمسار من خلال إنشاء رمز مميّز للمسار ثم تمريره إلى حزمة تطوير البرامج (SDK) الخاصة بخدمة Navigation، كما هو موضّح في الخطوات التالية:

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

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

  2. إعداد طلب Routes API أو Routes Preferred API لاستيفاء متطلبات استخدام الرمز المميز للمسار:

    • يُرجى ضبط travel_mode على DRIVE أو TWO_WHEELER.
    • يُرجى ضبط routing_preference على TRAFFIC_AWARE أو TRAFFIC_AWARE_OPTIMAL.
    • لا تستخدِم Via نقاط طريق

الخطوة 2: تمرير الرمز المميّز للمسار إلى Navigation SDK

  1. تخزين رمز المسار: في Navigation SDK، يمكنك إعداد سلسلة لتخزين رمز المسار. على سبيل المثال:

    String routeToken = "route token returned by Routes API";

    مثال على رمز مميّز للمسار تم عرضه:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. مرِّر رمز المسار إلى حزمة 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 مع المسار المخطَّط له في الرمز المميّز للمسار:

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

  • يستخدم الموقع الجغرافي الذي بدأت منه المركبة رحلتها.

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

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

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

    • الخيارات المتعلّقة بنقاط الطريق، مثل الإعدادات المفضّلة لجهة الطريق

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