طلب مسارات بديلة

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

اعتبارات عند طلب مسارات بديلة

لطلب مسارات بديلة، يُرجى مراعاة الاعتبارات التالية:

  • يمكنك طلب طرق بديلة فقط للطرق التي لا تتضمّن نقاط علام متوسطة. لا يؤدي طلب مسارات بديلة عندما يحدّد المسار نقاط تفتيش intermediate waypoints إلى حدوث خطأ. ومع ذلك، لا يتم عرض أي بديل للمسارات.

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

  • بسبب المعالجة الإضافية المطلوبة لاحتساب المسارات البديلة، قد يؤدي طلب مسارات بديلة إلى زيادة وقت استجابة واجهة برمجة التطبيقات.

مثال على طلب المسارات البديلة

اضبط computeAlternativeRoutes على true لطلب مسارات بديلة. يوضّح المثال التالي كيفية طلب مسارات بديلة في طلب computeRoutes (REST).

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude":42.340173523716736,
        "longitude":-71.05997968330408
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":42.075698891472804,
        "longitude": -72.59806562080408
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference":"TRAFFIC_AWARE",
  "computeAlternativeRoutes": true
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

في هذا المثال، يمكنك تحديد قناع حقل لكي يحتوي الردّ على السمات duration وdistanceMeters, وrouteLabels فقط لكل مسار. ويمكن للعميل عندئذٍ استخدام هذه المعلومات لاختيار المسار الذي يريد اتّباعه. لمزيد من المعلومات، يُرجى الاطّلاع على اختيار المعلومات التي سيتم عرضها.

مثال على استجابة المسارات البديلة

في الاستجابة، استخدِم سمة مصفوفة routeLabels لتحديد مسار الوصول:

  • بالنسبة إلى المسار التلقائي، تحتوي السمة routeLabels على DEFAULT_ROUTE.

  • بالنسبة إلى أيّ طرق بديلة، تحتوي السمة routeLabels على DEFAULT_ROUTE_ALTERNATE.

في هذا المثال، يحتوي الردّ على المسار التلقائي ومسارين بدائل. لاحظ أنّ قيم السمتَين duration وdistanceMeters تختلف لكل مسار:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}

تضمين خطوط متعددة في الاستجابة

لتسهيل اختيار المسار على المستخدم، أضِف الخط المتعدّد لكل مسار إلى الاستجابة. يمكنك بعد ذلك عرض كلّ خطّ متعدّد على خريطة.

لإضافة الخطوط المتعددة، أدرِج routes.polyline في قناع الحقل:

-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'

يحتوي الردّ بعد ذلك على الخطوط المتعددة لكل مسار:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "polyline": {
        "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "polyline": {
        "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "polyline": {
        "encodedPolyline": "FVLL|Af@HPAV…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}