پرش به محتوا

مسیر بهینهٔ چندمقصده

بهترین ترتیب بازدید از چند مقصد برای پیک و ارسال فروشگاه‌ها، با یک درخواست.

POST https://api.uttamap.ir/v1/route/optimize

پیک یا راننده‌ای که باید به چند نشانی برود، این endpoint را صدا می‌زند و ترتیب بازدید، مسیر کامل و مقداری را که نسبت به ترتیب اولیه صرفه‌جویی شده برمی‌گیرد. محاسبهٔ ترتیب با موتور مسیریابی انجام می‌شود و قواعد مسیریابی یوتامپ همین‌جا هم برقرار است: موتورسیکلت وارد آزادراه و بزرگراه نمی‌شود و هیچ مسیری خلاف یک‌طرفه نیست.

curl -X POST https://api.uttamap.ir/v1/route/optimize -H "X-Api-Key: um_sk_..." \
  -H "Content-Type: application/json" \
  -d '{"origin":[35.7200,51.3300],"stops":[[35.6900,51.3300],[35.7500,51.4100],[35.7000,51.4200]],"mode":"motorcycle","optimize":true,"end":"last"}'
{
  "order": [1, 0, 2],
  "routes": [ { "distance_m": 21400, "duration_s": 2310, "geometry": "<polyline6>", "legs": [ { "distance_m": 9800, "duration_s": 1010, "steps": [ … ] }, … ] } ],
  "distance_m": 21400,
  "duration_s": 2310,
  "optimized": true,
  "end": "last",
  "saved_distance_m": 5200,
  "saved_duration_s": 540
}

بدنه

فیلدتوضیح
originمبدأ، [lat, lng].
stopsمقصدها، هر کدام [lat, lng]. در حالت بهینه حداکثر ۱۵ و در حالت ترتیبی حداکثر ۲۵.
modecar (پیش‌فرض)، motorcycle، walk یا bike.
optimizetrue (پیش‌فرض): بهترین ترتیب. false: همان ترتیبی که فرستادید.
endlast (پیش‌فرض): آخرین مقصدِ فهرست، مقصد آخر می‌ماند. origin: سفر به مبدأ برمی‌گردد. any: هر جا کوتاه‌تر بود تمام شود.
steps، lang، geometryمثل مسیریابی: دستورهای فارسی، fa یا en، polyline6 یا geojson.

پاسخ

  • order: اندیس مقصدها در stops به ترتیب بازدید. شمارهٔ روی مارکرها همین است.
  • routes: یک مسیر با قالب مسیریابی که بین هر دو نقطهٔ پشت‌سرهم یک leg دارد. با end=origin آخرین leg به مبدأ برمی‌گردد.
  • saved_distance_m و saved_duration_s: تفاوت با ترتیبی که فرستادید. هدف بهینه‌سازی زمان سفر است، پس ممکن است مسیر کوتاه‌ترِ زمانی کمی مسافت بیشتری داشته باشد. پاسخ هرگز بدتر از ترتیب ورودی شما نیست؛ اگر ترتیب شما بهترین باشد، همان برمی‌گردد و optimized برابر false است.

شمارش

  • optimize=true: به‌ازای هر مقصد ۲ درخواست (سرویس route_optimize)، چون موتور برای یافتن ترتیب، ماتریس فاصلهٔ همهٔ نقطه‌ها را حساب می‌کند. ۱۰ مقصد = ۲۰ درخواست.
  • optimize=false: مثل یک مسیریابی معمولی، ۱ درخواست.
  • بیش از ۱۵ مقصد در حالت بهینه: 413 too_many_points، بدون شمارش. مقصدها را در چند درخواست تقسیم کنید.
  • کلیدی که سرویس «مسیریابی» برایش مجاز است، مسیر بهینه را هم می‌تواند صدا بزند.

زمان‌ها بدون ترافیک زنده و بر اساس سرعت معمول هر نوع راه‌اند.