درخواست مسیرهای جایگزین

به طور پیش‌فرض، Routes API مسیر پیش‌فرض را برمی‌گرداند، که معمولاً سریع‌ترین مسیر از مبدا به مقصد است. وقتی مسیرهای جایگزین را درخواست می‌کنید، API حداکثر سه مسیر را به همراه مسیر پیش‌فرض برمی‌گرداند. سپس مشتریان شما می توانند مسیری را انتخاب کنند که به بهترین وجه با نیازهای آنها مطابقت دارد.

ملاحظات در هنگام درخواست مسیرهای جایگزین

برای درخواست مسیرهای جایگزین، به نکات زیر توجه داشته باشید:

  • شما فقط می توانید مسیرهای جایگزین را برای مسیرهایی بدون ایستگاه بین راهی درخواست کنید. درخواست مسیرهای جایگزین زمانی که مسیر نقاط بین راهی را مشخص می کند باعث خطا نمی شود. با این حال، هیچ مسیر جایگزینی بازگردانده نمی شود.

  • پاسخ شامل حداکثر سه مسیر جایگزین است. با این حال، گاهی اوقات هیچ مسیر جایگزینی در دسترس نیست، بنابراین پاسخ فقط شامل مسیر پیش فرض است.

  • به دلیل پردازش اضافی مورد نیاز برای محاسبه مسیرهای جایگزین، درخواست مسیرهای جایگزین ممکن است زمان پاسخ 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"
      ]
    }
   ]
}