تحسين نقاط الطرق على المسار

تحسين نقاط المرور هو إحدى ميزات "المسارات المفضّلة" التي توسّع نطاق ComputeRoutes. تعمل هذه الميزة على تحسين ترتيب نقاط الطريق الوسيطة في مسار الرحلة، ما يضمن اتّباع المسار الأكثر فعالية. يتيح تنفيذ ميزة تحسين نقاط المرور وسائط النقل التالية:ComputeRoutes

  • القيادة
  • التنقّل على دراجة آلية
  • ركوب درّاجات
  • المشي

لماذا يجب استخدام ميزة تحسين نقاط الطريق؟

عند إنشاء تطبيق يرشد المستخدمين إلى عدد من نقاط الطريق في طريقهم إلى وجهة معيّنة، من المهم أن يتنقّل المسافر بين نقاط الطريق بالترتيب الأمثل. يضمن ذلك وصول المسافر إلى كل نقطة توقّف في أقصر وقت ممكن.

آلية العمل

تُجري الدالة ComputeRoutes تلقائيًا عملية حسابية للمسار عبر نقاط الطريق، بالترتيب الذي تم توفيرها به في الأصل. يمكنك الحصول على ComputeRoutes لتحسين المسار من خلال إعادة ترتيب نقاط الطريق الوسيطة بترتيب أكثر فعالية. ستتلقّى مسارًا يتضمّن نقاط طريق محسّنة إذا ضبطت الحقل optimizeWaypointOrder في نص الطلب على true.

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

الحصول على نقاط المرور المعاد ترتيبها

للحصول على مسار يتضمّن نقاط توقّف مُعاد ترتيبها، اضبط الحقل المنطقي optimizeWaypointOrder على true في نص طلبك إلى ComputeRoutes. أدرِج أيضًا الحقل optimizedIntermediateWaypointIndex في قناع الحقل. يحتوي نص الاستجابة على ترتيب نقاط الطريق المحسّن في حقول optimizedIntermediateWaypointIndex.

ملاحظة: يعرض الحقل optimizedIntermediateWaypointIndex قيمًا تبدأ من الصفر.

مثال على الطلب

يقدّم طلب المثال التالي مسارًا بالقرب من حرم جامعة ستانفورد. تم تقديم نقاط الطريق الخاصة بالمسار بالتسلسل في الطلب. يحتوي الطلب على نقطة انطلاق ووجهة، بالإضافة إلى نقطتَي توقّف وسيطتَين.

POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.418956,
        "longitude": -122.160815
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.4176423,
          "longitude":-122.1102246
        }
      }
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.407689,
          "longitude": -122.1360597
        }
      }
    }
  ],
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.4032137,
        "longitude": -122.0349119
      }
    }
  },
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": true,
  "routingPreference": "TRAFFIC_AWARE"}

مثال على إجابة

يمكنك العثور على فهارس نقاط المرور الوسيطة التي تمّت إعادة ترتيبها في حقول optimizedIntermediateWaypointIndex ضمن عنصر "الطرق" في نص الردّ. تكون السلسلة المتعددة الخطوط المشفرة هي نفسها المستخدَمة في Directions API وComputeRoutes.

routes {
  distance_meters: 17647
  duration {
    seconds: 1866
  }
  polyline {
    encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
  }
  optimizedIntermediateWaypointIndex: 1
  optimizedIntermediateWaypointIndex: 0
}

في هذا المثال، لاحظ أنّ تحسين نقاط الطريق يؤدي إلى عكس ترتيبها الأصلي.

تستغرق معالجة طلب يتضمّن نقاط طريق محسّنة وقتًا أطول من معالجة طلب توجيه بسيط. لذلك، ننصحك بضبط مهلة أطول لطلب الطريقة من خلال ضبط قيمة لعنوان طلب X-Server-Timeout لا تقل عن عشر ثوانٍ. إذا استمر ظهور أخطاء انتهاء المهلة، يمكنك إضافة ثانية أخرى ثم إعادة المحاولة.

قيود الاستخدام

لاستخدام ميزة "تحسين نقاط الطريق"، يجب الالتزام بقيود الاستخدام والشروط التالية:

  • يمكنك تحديد ما يصل إلى الحدّ الأقصى المسموح به لنقاط المرور الوسيطة على مسارك:

    • ما يصل إلى 98 نقطة طريق باستخدام إحداثيات خطوط الطول والعرض فقط
    • ما يصل إلى 25 نقطة توقّف إذا حدّدت أي نقاط توقّف باستخدام معرّفات الأماكن
  • يجب أن تكون جميع نقاط الطريق من النوع توقف. لا يمكن أن يكون أي من نقاط الطريق من النوع عبر.

  • يجب إضافة routes.optimizedIntermediateWaypointIndex إلى حقل القناع.

  • إذا كان طلبك يتضمّن 25 نقطة طريق وسيطة أو أكثر، يجب أيضًا أن يستوفي الشروط التالية:

    • يجب أن تكون المسافة المستقيمة المتراكمة بين جميع نقاط الطريق أقل من 1,000 كيلومتر، وتشمل هذه المسافة كلاً من نقطة الانطلاق والوجهة.

    • يجب أن يكون وضع السفر DRIVE.