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

"تحسين نقاط الطريق" هي ميزة "مفضلة للمسارات" تشمل 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 ضمن كائن المسارات في نص الاستجابة. تنسيق الخطوط المتعددة المشفر هو نفسه في Directs 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.