به طور پیشفرض، 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 برای هر مسیر باشد. سپس مشتری شما میتواند از آن اطلاعات برای انتخاب مسیری که انتخاب میکند استفاده کند. برای اطلاعات بیشتر، به بخش Choose what information to return مراجعه کنید.
مثال پاسخ مسیرهای جایگزین
در پاسخ، از ویژگی آرایه 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" ] } ] }