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

تعرض 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"
      ]
    }
   ]
}