تخطيط مسار

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

  • خطوط متعدّدة للمسار

  • أهداف مسارك

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

  • تقليل وقت التسليم: قد يهمّ نشاطًا تجاريًا يقدّم خدمة توصيل الطعام تقليل الوقت الذي يستغرقه توصيل الطعام.

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

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

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

لمزيد من المعلومات حول تخطيط مسار باستخدام رمز مميّز للمسار، يُرجى الاطّلاع على طلب رمز مميّز للمسار في واجهة Routes API والانتقال بين الخطوط المتعددة الأضلاع والرموز المميّزة للمسار في واجهة Route Optimization API.

لماذا يجب استخدام رمز مميّز للمسار لأهداف المسار؟

باستخدام رمز مميّز للمسار من Routes API أو Routes Preferred API أو Route Optimization API، يمكنك التحكّم بشكل أكبر في المسار المقدَّم:

  • خطِّط لمسار مسبقًا لتتمكّن حزمة 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. أثناء القيادة على المسار، إذا تغيّرت حركة المرور أو أحوال الطريق الأخرى، أو إذا انحرفت المركبة عن المسار المخطط له، ستحاول المسارات المعدَّلة باستمرار مطابقة أفضل مسار استنادًا إلى أهداف المسار في الرمز المميز.

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

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

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

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

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

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

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

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

    • يُرجى ضبط travel_mode على DRIVING أو 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);

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

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

  • تتجاوز أي وجهات تم ضبطها سابقًا.

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

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

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

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

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

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