در حال بارگذاری

پرش به مطلب اصلی

وب‌سرویس مسیریابی (خودرو + موتورسیکلت) نگارش 3.0.0

هشدار

صفحه‌ای که در حال مشاهده آن هستید، حاوی مستندات قدیمی نسخه سرویس مسیریابی می‌باشد. مستندات مرتبط با نسخه جدید این سرویس را در این صفحه می‌توانید مشاهده کنید.

سرویس مسیریابی با بهره‌گیری از داده‌های ترافیک آنلاین، بهترین مسیر را بین دو یا چند نقطه برای خودرو و موتورسیکلت محاسبه می‌کند. این سرویس که به عنوان سرویس تخمین زمان سفر (ETA) نیز عمل می‌کند، در پاسخ خود یک یا چند مسیر جایگزین را به همراه جزئیات کامل، زمان و مسافت سفر ارائه می‌دهد.

موارد کاربرد

  • تاکسی‌های آنلاین: یافتن سریع‌ترین مسیر بین راننده و مسافر با در نظر گرفتن ترافیک لحظه‌ای.
  • شرکت‌های پستی و لجستیک: بهینه‌سازی مسیر برای تحویل سریع بسته‌ها در چندین نقطه.
  • مدیریت ناوگان: برنامه‌ریزی دقیق برای جابجایی محموله‌ها و پرسنل.
  • فروشگاه‌های آنلاین: برآورد بهترین مسیر و زمان تحویل برای سفارش‌ها.
اطلاع
  1. ۱

    اولین قدم ثبت‌نام و دریافت API KEY برای اپلیکیشنی است که قصد دارید در آن از Map Api نشان استفاده کنید. کافیست در لینک فوق فرم مربوطه را تکمیل کنید تا بلافاصله API KEY را دریافت نمایید.

  2. ۲

    Api Key دریافتی از پنل توسعه‌دهندگان نشان را به صورتی که در ادامه مشاهده می‌کنید از طریق کلید Api-Key در header درخواست سرویس بگنجانید.

  3. ۳

    درخواست خود را با توجه به پارامترهایی که مربوط به سرویس موردنظرتان است با متد GET فراخوانی کنید.

  4. ۴

    چنانچه درخواست شما با موفقیت پردازش و پاسخ داده شود، خروجی با فرمت JSON دریافت خواهید کرد و چنانچه به هر دلیل خطایی رخ دهد، کد خطا بصورت HTTP Status Code و نوع آن با فرمت JSON ارسال می‌گردد. کدهای خطای احتمالی نیز در ادامه به صورت کامل توضیح داده شده‌اند.

شیوه‌ی فراخوانی

این سرویس دارای دو اندپوینت مجزا برای محاسبه با ترافیک و بدون ترافیک است.

مسیریابی با ترافیک

GET https://api.neshan.org/v3/direction?parameters

مسیریابی بدون ترافیک (فقط خودرو)

GET https://api.neshan.org/v2/direction/no-traffic?parameters

هدرهای درخواست (Headers)

Api-Key: YOUR_API_KEY

پارامترهای ورودی

پارامترتوضیحاتنوع
typeنوع وسیله نقلیه: car (خودرو) یا motorcycle (موتورسیکلت).اجباری
originمختصات مبدأ به صورت latitude,longitude.اجباری
destinationمختصات مقصد به صورت latitude,longitude.اجباری
waypointsاین پارامتر اختیاری بوده و برای مشخص کردن نقاط میانی مسیر استفاده می‌شود. فرمت ارسال هر نقطه میانی به صورت latitude,longitude می‌باشد. در صورتی که بیش از یک نقطه میانی دارید، آن‌ها را با علامت پایپ از هم جدا کنید.اختیاری
avoidTrafficZoneاگر true باشد، مسیر از طرح ترافیک عبور نمی‌کند. (پیش‌فرض false)اختیاری
avoidOddEvenZoneاگر true باشد، مسیر از طرح زوج و فرد عبور نمی‌کند. (پیش‌فرض false)اختیاری
alternativeاگر true باشد، مسیرهای جایگزین نیز (در صورت وجود) ارائه می‌شوند. (پیش‌فرض false)اختیاری
نکته

با توجه به اینکه نام طرح ترافیک در شهرهای دیگر (غیر از تهران) عموماً یه جای طرح زوج و فرد نیز استفاده می‌شود، چنانچه در سایر شهرها هر یک از پارامترهای avoidTrafficZone و avoidOddEvenZone مقدار true داشته باشند و مقصد درون طرح زوج و فرد آن شهر باشد، سرویس مسیریابی خطای NoRouteFound در پاسخ برمی‌گرداند.

رمزگذاری آدرس اینترنتی (URL Encoding)

از آنجا که برخی کاراکترها در URL معنای خاصی دارند، باید قبل از ارسال در پارامترها رمزگذاری (Encode) شوند.

مثال: برای جدا کردن نقاط در پارامتر waypoints از کاراکتر | استفاده می‌شود که معادل رمزگذاری شده آن %7C است.

کاراکترمعادل رمزگذاری
Space%20
"%22
#%23
``
%%25

مستندات و کتابخانه‌ها

برای اطلاعات بیشتر در مورد URL Encoding می‌توانید از منابع زیر استفاده کنید:

نمونه درخواست

curl --location 'GET https://api.neshan.org/v3/direction?type=car&origin=35.72084257271665%2C51.432258666992766&destination=35.67032306940622%2C51.29844587298737&waypoints=35.7001%2C51.3882%7C35.7005%2C51.3895&avoidTrafficZone=false&avoidOddEvenZone=false&alternative=true' \
--header 'Api-Key: YOUR_API_KEY'

فرمت پاسخ

{
"routes": [
{
"legs": [
{
"summary": "آزادی - ولیعصر",
"distance": {
"value": 8998,
"text": "۹ کیلومتر"
},
"duration": {
"value": 2012,
"text": "۳۴ دقیقه"
},
"steps": [
{
"name": "عضدی جنوبی",
"instruction": "در جهت شرق در عضدی جنوبی قرار بگیرید",
"distance": {
"value": 46,
"text": "۴۶ متر"
},
"duration": {
"value": 11,
"text": "کمتر از ۱ دقیقه"
},
"polyline": "qxu|EkpcjJb@{@Tc@b...",
"maneuver": "depart",
"start_location": [
51.344035,
35.695452
]
}
]
}
],
"overview_polyline": {
"points": "qwzxEgckxHBeAWEDq ..."
}
}
]
}

اجزای پاسخ

پارامترتوضیحات
routesآرایه‌ای از مسیرهای پیشنهادی.
overview_polylineنمای کلی و ساده‌شده مسیر به صورت Encoded Polyline.
legsهر مسیر از یک یا چند leg (بخش) تشکیل شده است (بین مبدأ، مقصد و نقاط میانی).
summaryخلاصه‌ای از نام خیابان‌های اصلی در هر leg.
distanceآبجکتی شامل مسافت کل leg (به متر و به صورت متنی).
durationآبجکتی شامل زمان کل leg (به ثانیه و به صورت متنی).
stepsآرایه‌ای از گام‌های جزئی برای پیمودن هر leg.

آبجکت step

پارامترتوضیحات
nameنام معبری که گام در آن شروع می‌شود.
instructionدستورالعمل راهنمای مسیر برای آن گام.
maneuverجهت تغییر مسیر (right, left, uturn, straight, slight-right, sharp-right, slight-left, sharp-left, exit-rotary, depart, arrive).
distanceآبجکتی شامل طول گام.
durationآبجکتی شامل زمان سفر در این گام.
polylineهندسه دقیق گام به صورت Encoded Polyline.
startLocationنقطه شروع گام به صورت [longitude, latitude].

توضیحات مرتبط با فیلد maneuver

  • right: گردش به راست
  • slight-right: گردش به راست با زاویه کم
  • sharp-right: گردش به راست با زاویه تند
  • left: گردش به چپ
  • slight-left: گردش به چپ با زاویه کم
  • sharp-left: گردش به چپ با زاویه تند
  • uturn: دور برگردان
  • straight: مسیر مستقیم
  • exit-rotary: خروجی میدان
  • depart: شروع مسیر (مبدا)
  • arrive: خاتمه مسیر (مقصد)

نکته: فرمت Encoded Polyline

برای کاهش حجم پاسخ، مختصات مسیر (پارامتر polyline) به فرمت Encoded Polyline ارائه می‌شود. برای آشنایی با نحوه کدگشایی (Decode) این فرمت می‌توانید به منابع زیر مراجعه کنید:

کد خطاهای سرویس

HTTP CodeStatusDescription
404NOT_FOUNDکد پستی با این مشخصات یافت نشده است
400INVALID_ARGUMENTخطا در پارامتر های ورودی
470CoordinateParseErrorچنانچه مختصات جغرافیایی ارسالی معتبر نباشد رخ خواهد داد.
480KeyNotFoundدر صورتی که در فراخوانی وب‌سرویس از یک Api Key نامعتبر استفاده کنید یا Api Key خود را در header ارسال نکنید رخ خواهد داد.
481LimitExceededدر صورتی که تعداد فراخوانی وب‌سرویس‌ها از میزان مجازی که برای شما تعیین شده‌است عبور کند رخ خواهد داد.
482RateExceededچنانچه تعداد درخواست وب‌سرویس در دقیقه از حد مجاز عبور کند رخ خواهد داد.
483ApiKeyTypeErrorکلید دسترسی استفاده شده با سرویس فراخوانی شده همخوانی ندارد. بایستی از کلید دسترسی مرتبط با سرویس مورد نظر استفاده کنید.
484ApiWhiteListErrorبا توجه به اسکوپ تعریف‌شده برای این کلید، شما مجاز به استفاده نیستید.
485ApiServiceListErrorسرویس فراخوانی شده با سرویس‌های تعریف‌شده برای این کلید دسترسی همخوانی ندارد.
500GenericErrorوقوع خطای ناشناخته