سرویس بهینهسازی سفر چند مقصده، ترتیب بهینه سفر از یک مبدا به چند مقصد را تعیین میکند. این سرویس با محاسبه مسافت و زمان سفر بین مبدا و مقصدها، ترتیب بهینه سفر برای رسیدن به تمامی مقصدها را فراهم میآورد. کاربر میتواند مقصد نهایی سفر را تعیین کند که دو دارای دو امکان مجزای زیر است:
حالت اول: مقصد نهایی کاربر تعیین نشود. در این صورت پیدا کردن ترتیب بهینه سفر بر مبنای طول مسافت و زمان بین مقصدها صورت میگیرد.
حالت دوم: آخرین مسیر وارد شده به عنوان مقصد نهایی سفر تعیین شود. در این حالت پیدا کردن ترتیب بهینه سفر با در نظر گرفتن آخرین ورودی به عنوان مقصد نهایی انجام میگیرد.
سرویس بهینهسازی سفر چند مقصده، برای هر نقطه یک مشخصه یکتا (id
) در نظر میگیرد. اولین ورودی دارای id
صفر است و شناسه یکتای بقیه نقاط بهترتیب از یک تا آخر شمارهگزاری میشوند. به عنوان مثال اگر سه نقطه وارد شود، id
نقاط به ترتیب ۰، ۱ و ۲ است. id
صفر برای نقطه اول و یا همان مبدا است. با استفاده از مشخصه یکتای هر نقطه، ترتیب سفر بین نقاط را مشخص میکند. به عنوان مثال start_id
: ۰ به end_id
: ۳، یعنی سفر از اولین نقطه به ورودی به چهارمین نقطه ورودی انجام گیرد.
بهینهسازی سفر چند مقصده با وسیله نقلیه خودرو |
بهینهسازی سفر چند مقصده با وسیله نقلیه موتورسیکلت |
بهینهسازی سفر چند مقصده با تعیین شدن آخرین ورودی به عنوان مقصد نهایی کاربر و وسیله نقلیه خودرو |
بهینهسازی سفر چند مقصده با تعیین شدن آخرین ورودی به عنوان مقصد نهایی کاربر و وسیله نقلیه موتور |
تخمین زمان سفر با احتساب ترافیک و یا بدون درنظر گرفتن ترافیک |
get/direction/optimized-route?parameters
پارامتر | توضیحات |
---|---|
waypoints |
مجموعه نقاط مبدا و مقصد درخواستی را مشخص میکند. این نقاط با | از هم جدا میشوند. هر نقطه دارای طول و عرض جغرافیایی است و با , از هم تفکیک میشوند. ترتیب وارد کردن نقاط مهم است و نقطه اول به عنوان مبدا در نظر گرفته میشود. |
پارامترهای اختیاری آپشنها و امکانات مختلف سرویس را ارائه میدهند. ارسال آنها جهت استفاده از سرویس اجباری نیست.
پارامتر | توضیحات | مقدار پیشفرض |
---|---|---|
last_destination |
مقصد نهایی کاربر را مشخص میکند. اگر مقدار این پارامتر last باشد، آخرین مقصد وارد شده به عنوان مقصد نهایی کاربر در نظر گرفته میشود و اگر مقداری برای این پارامتر وارد نشده باشد و یا مقدار آن none باشد، سرویس بهینه سازی سفر را بر اساس فاصله زمانی و مکانی مسیرها و بدون در نظر گرفتن مقصد نهایی کاربر انجام میدهد. |
پیشفرض تعیین نشدن آخرین مقصد وارد شده به عنوان مقصد نهایی کاربر (none ) است. |
travel_mode |
نوع وسیله نقلیه را مشخص میکند. این سرویس قابلیت انتخاب وسایل نقلیه خودرو و موتورسیکلت را دارد. درصورتیکه مقدار این پارامتر driving یا ۰ باشد و یا مقداری برای آن وارد نشده باشد تخمین زمانی برای ماشین و اگر ۱ یا motorcycling باشد تخمین زمانی برای موتور است. |
پیشفرض وسیله نقلیه خودرو (driving ) است. |
traffic |
احتساب و یا عدم احتساب ترافیک در تعیین زمان سفر را تعیین میکند. درصورت درخواست کردن محاسبه زمان سفر با در نظر گرفتن ترافیک، مقدار این پارامتر باید true باشد. در صورت درخواست کردن تعیین زمان سفر بدون در نظر گرفتن ترافیک، مقدار این پارامتر باید به false تغییر یابد. |
پیشفرض، عدم درنظرگرفتن ترافیک (false ) در محاسیه زمان سفر است. |
request_id |
در صورت ست شدن پارامتر فوق، به صورت یکتا در روز میتوان برای پیگیری استفاده نمود. | به صورت پیشفرض، عدم پیگیری در روز است. |
با ارسال مختصات جغرافیایی نقاط، ترتیب بهینه سفر از مبدا به مقصدها با شرط عبور از تمامی مقصدها در پاسخ برگردانده میشود.
https://api.parsimap.ir/direction/optimized-route?key=PMI_API_TOKEN&travel_mode=driving&waypoints=51.33673,35.71664|51.33748,35.72074|51.33678,35.73668|51.33669,35.7169&traffic=true
{ "legs": [ { "start_id": 0, "end_id": 3, "distance": { "text": "۱۱ متر", "value": 11 }, "duration": { "text": "۱ ثانیه ", "value": 1 }, "start_location": { "lat": 35.71664, "lng": 51.33673 }, "end_location": { "lat": 35.7169, "lng": 51.33669 } }, { "start_id": 3, "end_id": 1, "distance": { "text": "۸۳۳ متر", "value": 833 }, "duration": { "text": "۱ دقیقه ۲۰ ثانیه", "value": 80 }, "start_location": { "lat": 35.7169, "lng": 51.33669 }, "end_location": { "lat": 35.72074, "lng": 51.33748 } }, { "start_id": 1, "end_id": 2, "distance": { "text": "۲ کیلومتر ۲۷۲ متر", "value": 2272 }, "duration": { "text": "۳ دقیقه ۴۵ ثانیه", "value": 225 }, "start_location": { "lat": 35.72074, "lng": 51.33748 }, "end_location": { "lat": 35.73668, "lng": 51.33678 } } ], "distance": { "text": "۳ کیلومتر ۱۱۶ متر", "value": 3116 }, "duration": { "text": "۵ دقیقه ۷ ثانیه", "value": 307 }, "start_location": { "lat": 35.71664, "lng": 51.33673 }, "end_location": { "lat": 35.73668, "lng": 51.33678 }, "status": "OK" }
پارامتر | توضیحات |
---|---|
legs |
مشخصات سفر بین هر جفت نقطه ورودی و ترتیب سفرها است. legs شامل بخشهای است که هر بخش خود شامل شناسه یکتای ابتدا و انتهای سفر (start_id و end_id )، مسافت، زمان، مختصات نقطه شروع و پایان سفر برای هرجفت نقطه ورودی است. ترتیب این بخشها مهم است، زیرا ترتیب بهینه عبور از مقصدها را مشخص مینماید. مبدا هر بخش (غیر از بخش اول) برابر با مقصد بخش قبل است. مسافت و زمان هر بخش نشاندهنده زمان و مسافت سفر بین مقصد بخش قبلی (مبدا این بخش) و نقطهای است که end_id آن در این بخش مشخص شده است. این سرویس برای هر نقطه یک مشخصه یکتا ( id ) در نظر میگیرد. اولین ورودی دارای id صفر است و شناسه یکتای بقیه نقاط بهترتیب از یک تا آخر شمارهگزاری میشوند. به عنوان مثال اگر سه نقطه وارد شود، id نقاط به ترتیب ۰، ۱ و ۲ است. id صفر برای نقطه اول و یا همان مبدا است.start_id نشان دهندهی id نقطه شروع سفر هر بخش شود و end_id شناسه یکتای پایان سفر هر بخش است. بهعنوان مثال start_id صفر و end_id دو به معنای شروع سفر از اولین نقطه با id صفر به سومین نقطه با id دو است.
|
distance |
این پارامتر مسافت کلی سفر از مبدا به مقصدها است. واحد اندازهگیری مسافت متر است. خروجی به دو صورت مقدار عددی (text ) و حرفی (value ) نشان داده میشود. |
duration |
این پارامتر زمان کلی سفر از مبدا به مقصدها نقاط مقصد است. واحد اندازهگیری آن ثانیه است. خروجی به دو صورت مقدار عددی (text ) و حرفی (value ) نشان داده میشود. |
start_location |
مختصات جغرافیایی نقطه شروع سفر است. مختصات این نقطه برابر است با مختصات نقطه اولی است که کاربر وارد کرده است. |
end_location |
مختصات نقطه پایانی سفر است. اگر کاربر گزینه last_destination را فعال کند، مختصات این نقطه برابر است با مختصات آخرین نقطهای که کاربر وارد کرده است. |
status |
نتیجه درخواست را نشان میدهد. برای مثال نتیجه این درخواست OK است که به معنی موفق بودن درخواست است. نتیجه پاسخ به درخواست ارسالی توسط کاربر در قالب جدول زیر ارائه شده است: جدول |
با ارسال مختصات جغرافیایی نقاط، ترتیب بهنیه سفر از مبدا به مقصدها با وسیله نقلیه موتورسیکلت و با شرط عبور از تمامی مقصدها در پاسخ برگردانده میشود.
https://api.parsimap.ir/direction/optimized-route?key=PMI_API_TOKEN&travel_mode=motorcycling&waypoints=51.33673,35.71664|51.33748,35.72074|51.33678,35.73668|51.33669,35.71698&traffic=true
{ "legs": [ { "start_id": 0, "end_id": 3, "distance": { "text": "۱۷۷ متر", "value": 177 }, "duration": { "text": "۲۷ ثانیه ", "value": 27 }, "start_location": { "lat": 35.71664, "lng": 51.33673 }, "end_location": { "lat": 35.71698, "lng": 51.33669 } }, { "start_id": 3, "end_id": 1, "distance": { "text": "۷۹۸ متر", "value": 798 }, "duration": { "text": "۱ دقیقه ۲۸ ثانیه", "value": 88 }, "start_location": { "lat": 35.71698, "lng": 51.33669 }, "end_location": { "lat": 35.72074, "lng": 51.33748 } }, { "start_id": 1, "end_id": 2, "distance": { "text": "۲ کیلومتر ۲۷۲ متر", "value": 2272 }, "duration": { "text": "۳ دقیقه ۵۵ ثانیه", "value": 235 }, "start_location": { "lat": 35.72074, "lng": 51.33748 }, "end_location": { "lat": 35.73668, "lng": 51.33678 } } ], "distance": { "text": "۳ کیلومتر ۲۴۸ متر", "value": 3248 }, "duration": { "text": "۵ دقیقه ۵۲ ثانیه", "value": 352 }, "start_location": { "lat": 35.71664, "lng": 51.33673 }, "end_location": { "lat": 35.73668, "lng": 51.33678 }, "status": "OK" }
با ارسال مختصات جغرافیایی نقاط و تعیین کردن آخرین ورودی به عنوان مقصد نهایی، ترتیب بهنیه سفر از مبدا به مقصدها با شرط عبور از تمامی مقصدها در پاسخ برگردانده میشود.
https://api.parsimap.ir/direction/optimized-route?key=PMI_API_TOKEN&last_destination=last&travel_mode=driving&waypoints=51.33673,35.71664|51.33748,35.72074|51.33669,35.71698|51.33678,35.73668&traffic=true
{ "legs": [ { "start_id": 0, "end_id": 2, "distance": { "text": "۱۷۷ متر", "value": 177 }, "duration": { "text": "۲۶ ثانیه ", "value": 26 }, "start_location": { "lat": 35.71664, "lng": 51.33673 }, "end_location": { "lat": 35.71698, "lng": 51.33669 } }, { "start_id": 2, "end_id": 1, "distance": { "text": "۷۹۸ متر", "value": 798 }, "duration": { "text": "۱ دقیقه ۲۰ ثانیه", "value": 80 }, "start_location": { "lat": 35.71698, "lng": 51.33669 }, "end_location": { "lat": 35.72074, "lng": 51.33748 } }, { "start_id": 1, "end_id": 3, "distance": { "text": "۲ کیلومتر ۲۷۲ متر", "value": 2272 }, "duration": { "text": "۳ دقیقه ۴۵ ثانیه", "value": 225 }, "start_location": { "lat": 35.72074, "lng": 51.33748 }, "end_location": { "lat": 35.73668, "lng": 51.33678 } } ], "distance": { "text": "۳ کیلومتر ۲۴۸ متر", "value": 3248 }, "duration": { "text": "۵ دقیقه ۳۱ ثانیه", "value": 331 }, "start_location": { "lat": 35.71664, "lng": 51.33673 }, "end_location": { "lat": 35.73668, "lng": 51.33678 }, "status": "OK" }
با ارسال مختصات جغرافیایی نقاط و تعیین کردن آخرین ورودی به عنوان مقصد نهایی، ترتیب بهنیه سفر از مبدا به مقصدها با وسیله نقلیه موتورسیکلت و با شرط عبور از تمامی مقصدها در پاسخ برگردانده میشود.
https://api.parsimap.ir/direction/optimized-route?key=PMI_API_TOKEN&last_destination=last&travel_mode=motorcycling&waypoints=51.33673,35.71664|51.33748,35.72074|51.33669,35.71698|51.33678,35.73668&traffic=true
{ "legs": [ { "start_id": 0, "end_id": 2, "distance": { "text": "۱۷۷ متر", "value": 177 }, "duration": { "text": "۲۷ ثانیه ", "value": 27 }, "start_location": { "lat": 35.71664, "lng": 51.33673 }, "end_location": { "lat": 35.71698, "lng": 51.33669 } }, { "start_id": 2, "end_id": 1, "distance": { "text": "۷۹۸ متر", "value": 798 }, "duration": { "text": "۱ دقیقه ۲۸ ثانیه", "value": 88 }, "start_location": { "lat": 35.71698, "lng": 51.33669 }, "end_location": { "lat": 35.72074, "lng": 51.33748 } }, { "start_id": 1, "end_id": 3, "distance": { "text": "۲ کیلومتر ۲۷۲ متر", "value": 2272 }, "duration": { "text": "۳ دقیقه ۵۵ ثانیه", "value": 235 }, "start_location": { "lat": 35.72074, "lng": 51.33748 }, "end_location": { "lat": 35.73668, "lng": 51.33678 } } ], "distance": { "text": "۳ کیلومتر ۲۴۸ متر", "value": 3248 }, "duration": { "text": "۵ دقیقه ۵۲ ثانیه", "value": 352 }, "start_location": { "lat": 35.71664, "lng": 51.33673 }, "end_location": { "lat": 35.73668, "lng": 51.33678 }, "status": "OK" }
با ارسال مختصات جغرافیایی نقاط و false
ارسال کردن پارامتر traffic
، فاصله زمانی سفر بین نقاط بدون درنظر گرفتن ترافیک تعیین میشود.
https://api.parsimap.ir/direction/optimized-route?key=PMI_API_TOKEN&last_destination=last&travel_mode=driving&waypoints=51.41995,35.70156|51.42884,35.80729|51.42095,35.72123|51.37415,35.77339&traffic=false
{ "legs": [ { "start_id": 0, "end_id": 2, "distance": { "text": "۲ کیلومتر ۷۹۱ متر", "value": 2791 }, "duration": { "text": "۵ دقیقه ۳ ثانیه", "value": 303 }, "start_location": { "lat": 35.70156, "lng": 51.41995 }, "end_location": { "lat": 35.72123, "lng": 51.42095 } }, { "start_id": 2, "end_id": 1, "distance": { "text": "۱۱ کیلومتر ۴۳۳ متر", "value": 11433 }, "duration": { "text": "۱۲ دقیقه ۳۱ ثانیه", "value": 751 }, "start_location": { "lat": 35.72123, "lng": 51.42095 }, "end_location": { "lat": 35.80729, "lng": 51.42884 } }, { "start_id": 1, "end_id": 3, "distance": { "text": "۸ کیلومتر ۶۱۸ متر", "value": 8618 }, "duration": { "text": "۱۰ دقیقه ۴۶ ثانیه", "value": 646 }, "start_location": { "lat": 35.80729, "lng": 51.42884 }, "end_location": { "lat": 35.77339, "lng": 51.37415 } } ], "distance": { "text": "۲۲ کیلومتر ۸۴۲ متر", "value": 22842 }, "duration": { "text": "۲۸ دقیقه ۲۱ ثانیه", "value": 1701 }, "start_location": { "lat": 35.70156, "lng": 51.41995 }, "end_location": { "lat": 35.77339, "lng": 51.37415 }, "status": "OK" }
پارامترهای سرویس به صورت POST
ارسال میگردند. برای ارسال درخواست با استفاده از متد POST
پارامتر headers
باید به صورت زیر تعیین شود.
"Content-Type": "application/x-www-form-urlencoded"
var request = require("request"); var options = { method: "POST", url: "https://api.parsimap.ir/direction/optimized-route?key=PMI_API_TOKEN", headers: { "Content-Type": "application/x-www-form-urlencoded", }, form: { travel_mode: "driving", waypoints: "51.39110, 35.70085|51.40513, 35.70114|51.41889, 35.70158|51.39110, 35.70085", }, }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
{ "legs": [ { "start_id": 0, "end_id": 3, "distance": { "text": "۰ متر", "value": 0 }, "duration": { "text": "", "value": 0 }, "start_location": { "lat": 35.70085, "lng": 51.3911 }, "end_location": { "lat": 35.70085, "lng": 51.3911 } }, { "start_id": 3, "end_id": 1, "distance": { "text": "۱ کیلومتر ۲۸۸ متر", "value": 1288 }, "duration": { "text": "۱ دقیقه ۴۲ ثانیه", "value": 102 }, "start_location": { "lat": 35.70085, "lng": 51.3911 }, "end_location": { "lat": 35.70114, "lng": 51.40513 } }, { "start_id": 1, "end_id": 2, "distance": { "text": "۱ کیلومتر ۴۲۱ متر", "value": 1421 }, "duration": { "text": "۳ دقیقه ۵۸ ثانیه", "value": 238 }, "start_location": { "lat": 35.70114, "lng": 51.40513 }, "end_location": { "lat": 35.70158, "lng": 51.41889 } } ], "distance": { "text": "۲ کیلومتر ۷۰۹ متر", "value": 2709 }, "duration": { "text": "۵ دقیقه ۴۱ ثانیه", "value": 341 }, "start_location": { "lat": 35.70085, "lng": 51.3911 }, "end_location": { "lat": 35.70158, "lng": 51.41889 }, "status": "OK" }ocation": { "lat": 35.70085, "lng": 51.3911 }, "status": "OK" }