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

بشكل تلقائي، تعرض 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"
      ]
    }
   ]
}

تضمين الخطوط المتعددة في الردّ

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

لإضافة الخطوط المتعددة، يجب تضمين 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"
      ]
    }
   ]
}