الحصول على مسارات بديلة

المطوّرون في المنطقة الاقتصادية الأوروبية

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

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

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

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

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

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

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

اضبط 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"
      ]
    }
   ]
}