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

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