وب‌سرویس مسیریابی و تخمین زمان سفر (خودرو + موتورسیکلت)

سرویس مسیریابی با در نظر گرفتن ترافیک (خودرو و موتورسیکلت بصورت مجزا)

سرویس مسیریابی نشان Direction-Routing API

 

پلتفرم نقشه نشان با بهره‌گیری از داده و مشارکت جامعه کاربران مسیریاب نشان، تنها ارائه‌دهنده ایرانی سرویس مسیریابی بر اساس دیتای ترافیک آنلاین است.

با استفاده از وب‌سرویس مسیریابی (Routing / Direction API) شما می‌توانید بهترین مسیر بین دو نقطه‌ی مشخص را به دست آورید. محاسبه مسیر با توجه به ترافیک معابر محاسبه می‌شود و هر پاسخ ممکن است شامل یک یا چند مسیر باشد. در هر مسیر زمان سفر و مسافت آن محاسبه می‌گردد. مرتب‌سازی مسیرها بر اساس بهترین مسیر از نظر زمان و مسافت خواهد بود.

از جمله کسب و کار هایی که می‌توانند در خدمات خود از این سرویس استفاده کنند:

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

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

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

فروشگاه‌ها و سوپرمارکت‌های آنلاین: این فروشگاه‌ها می‌توانند با استفاده از سرویس مسیریابی، بهترین مسیر و زمان لازم برای تحویل سفارش‌های آنلاین را برآورد کنند. این امر به کاهش زمان تحویل، صرفه‌جویی در هزینه‌های حمل‌ونقل و بهبود رضایتمندی مشتری می‌انجامد.

 

سرویس ETA / تخمین زمان سفر

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

شیوه‌ی فراخوانی:
مسیریابی با ترافیک:
GET:
	https://api.neshan.org/v4/direction?parameters
Headers:
	Api-Key: YOUR_API_KEY
مسیریابی بدون ترافیک: (فقط برای خودرو)
پارامتر های وروردی:
GET:
	https://api.neshan.org/v4/direction/no-traffic?parameters
Headers:
	Api-Key: YOUR_API_KEY
  • type: مشخص میکند که مسیریابی مخصوص به خودرو یا موتورسیکلت استفاده شود. مقدار آن میتواند car برای مسیریابی خودرو و motorcycle برای مسیریابی موتور باشد.
  • origin: مختصات نقطه شروع مسیریابی، این مختصات باید به صورت latitude,longitude باشد که دو عدد با کاما از هم جدا شده‌اند.
  • destination: مختصات نقطه پایان مسیریابی که قالب آن مانند نقطه شروع است.
  • waypoints: این پارامتر اختیاری بوده و برای مشخص کردن نقاط میانی مسیر استفاده می‌شود. فرمت ارسال هر نقطه میانی به صورت
  • latitude,longitude می‌باشد. در صورتی که بیش از یک نقطه میانی دارید با به صورت زیر آن‌ها را با علامت پایت (|) از هم جدا کنید: latitude,longitude|latitude,longitude
  • avoidTrafficZone: این پارامتر اختیاری بوده و مقادیر آن true یا false می‌تواند باشد. در صورتی که این پارامتر true باشد مسیر از داخل طرح ترافیک عبور نخواهد کرد. همچین در صورتی که مقصد داخل طرح ترافیک باشد هیچ مسیری پیدا نمی‌شود.
  • avoidOddEvenZone: این پارامتر اختیاری بوده و مقادیر آن true یا false می‌تواند باشد. در صورتی که این پارامتر true باشد مسیر از داخل طرح زوج و فرد عبور نخواهد کرد. همچین در صورتی که مقصد داخل طرح ترافیک باشد هیچ مسیری پیدا نمی‌شود.
  • alternative: این پارامتر اختیاری بوده و مقادیر آن true یا false می‌تواند باشد. در صورتی که این پارامتر true باشد و مسیرهای جایگزین برای نقاط مشخص شده وجود داشته باشد این مسیرها در پاسخ ارائه خواهند شد. (مقدار پیش فرض این پارامتر false است)
  • bearing: این فیلد که مقدار آن میتواند بین ۰ تا ۳۶۰ باشد(زاویه ساعت گرد نسبت به شمال)، جهت را هنگام شروع مسیر یابی مشخص می نماید. این مقدار منجر به مسیر یابی بهینه تر بر اساس جهت شروع مسیر یابی در خیابان میشود.
رمزگذاری آدرس اینترنتی :

بعضی از حروف و کاراکترها نمی‌توانند بصورت مستقیم در آدرس قرار بگیرند زیراکه این کاراکترها دارای معانی خاص خود هستند به عنوان مثال کاراکتر (=) برای جداسازی کلید و مقدار آن کلید مورد استفاده قرار می‌گیرد از این رو در نحو نوشتاری عمومی آدرس های اینترنتی رمزگذاری مطرح شد که این مشکل را به صورت عمومی حل کند .

بعضی از کاراکترهای خاص و معادل رمزگذاری شده آن ها : 

معادل رمزگذاری
کاراکتر
%20
Space
%22
%23
#
%7C
|
%25
%
 مستندات و کتاب‌خانه ها :
فرمت پاسخ:
            {
    "routes": [
        {
            "overview_polyline": {
                "points": "kz{xEggtxHn@E|@iAtMcAq@k`Ap@yO_OyA"
            },
            "legs": [
                {
                    "summary": "روانمهر - ولیعصر",
                    "distance": {
                        "value": 1820.0,
                        "text": "۲ کیلومتر"
                    },
                    "duration": {
                        "value": 487.0,
                        "text": "۸ دقیقه"
                    },
                    "steps": [
                        {
                            "name": "میدان انقلاب اسلامی",
                            "instruction": "در جهت جنوب در میدان انقلاب اسلامی قرار بگیرید",
                            "bearing_after": 193,
                            "type": "depart",
                            "modifier": "left",
                            "distance": {
                                "value": 61.0,
                                "text": "۷۵ متر"
                            },
                            "duration": {
                                "value": 13.0,
                                "text": "کمتر از ۱ دقیقه"
                            },
                            "polyline": "kz{xEggtxHHBRAPGPMJSDS",
                            "start_location": [
                                51.390755,
                                35.701021
                            ]
                        },
                        {
                            "name": "",
                            "instruction": "به مسیر خود ادامه دهید",
                            "bearing_after": 147,
                            "type": "exit rotary",
                            "modifier": "slight right",
                            "exit": 1,
                            "distance": {
                                "value": 279.0,
                                "text": "۳۰۰ متر"
                            },
                            "duration": {
                                "value": 72.0,
                                "text": "۱ دقیقه"
                            },
                            "polyline": "ww{xEcitxHXSf@Ih@EvCS~AMjCQ",
                            "start_location": [
                                51.391063,
                                35.700596
                            ]
                        },
                        {
                            "name": "روانمهر",
                            "instruction": "به سمت روانمهر، به چپ بپیچید",
                            "bearing_after": 80,
                            "type": "turn",
                            "modifier": "left",
                            "distance": {
                                "value": 983.0,
                                "text": "۱۰۰۰ متر"
                            },
                            "duration": {
                                "value": 261.0,
                                "text": "۴ دقیقه"
                            },
                            "polyline": "gh{xE{ktxHASC]AkB?_@A}AGgJAy@?q@AQAiCEmFEoCAwCCmGAcBAcB?EAaBAkA?mA",
                            "start_location": [
                                51.391498,
                                35.698122
                            ]
                        },
                        {
                            "name": "خسرو شکیبایی",
                            "instruction": "در خسرو شکیبایی به مسیر خود ادامه دهید",
                            "bearing_after": 95,
                            "type": "new name",
                            "modifier": "straight",
                            "distance": {
                                "value": 210.0,
                                "text": "۲۲۵ متر"
                            },
                            "duration": {
                                "value": 78.0,
                                "text": "۱ دقیقه"
                            },
                            "polyline": "yi{xEuovxHXuFVuE",
                            "start_location": [
                                51.402349,
                                35.698366
                            ]
                        },
                        {
                            "name": "ولیعصر",
                            "instruction": "به چپ بپیچید و وارد ولیعصر شوید",
                            "bearing_after": 7,
                            "type": "end of road",
                            "modifier": "left",
                            "distance": {
                                "value": 288.0,
                                "text": "۳۰۰ متر"
                            },
                            "duration": {
                                "value": 130.0,
                                "text": "۲ دقیقه"
                            },
                            "polyline": "gh{xEa~vxHgAK{BUcCU_AKwBU",
                            "start_location": [
                                51.404651,
                                35.698117
                            ]
                        },
                        {
                            "name": "ولیعصر",
                            "instruction": "در مقصد قرار دارید",
                            "bearing_after": 0,
                            "type": "arrive",
                            "distance": {
                                "value": 0.0,
                                "text": ""
                            },
                            "duration": {
                                "value": 0.0,
                                "text": ""
                            },
                            "polyline": "gx{xE{`wxH",
                            "start_location": [
                                51.405102,
                                35.700682
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}
        
اجزای پاسخ:
  • routes: هر پاسخ مسیر ممکن است از یک یا چند route تشکیل شده باشد. مسیرهای جایگزین یا alternative بسته به موقعیت ممکن است تغییر کنند. اجزای یک route به صورت زیر می‌باشند:
    • overviewPolyline: یک نمونه simplified شده از کل مسیر که به صورت Encoded Polyline می‌باشد. دقت کنید این فیلد تنها برای نمایش یک نمای کلی از خط مسیر در سطح زوم‌های بالا می‌باشد و خطوط آن دقیق نمی‌باشند. برای رسم خطوط اصلی مسیر باید از فیلد polyline در هر step استفاده کنید.
    • legs: در صورتی که مسیریابی فقط بین دو نقطه انجام شود route دارای یک leg خواهد بود. اگر پارامتر نقاط میانی برای مسیریابی ارسال شود بین هر دو نقطه میانی در route یک leg ایجاد می‌شود. هر leg از اجزای زیر تشکیل شده‌است:
      • summery: خلاصه‌ای از مسیر که معمولا شامل نام دو خیابان اصلی ابتدا و انتهای آن leg است. با استفاده از خلاصه به صورت حدودی مسیر مشخص می‌شود.
      • distance: فاصله بین دو نقطه که به دو صورت عددی و قابل خواندن ارائه می‌شود. در فرمت عددی مقدار فاصله به متر است.
      • duration: زمان سفر بین دو نقطه که به دو صورت عددی و قابل خواند ارائه می‌شود. در فرمت عددی مقدار زمان به ثانیه است.
      • steps: با توجه به شکل مسیر و پیچ خم‌های موجود یک leg می‌تواند شامل یک یا چند step باشد. اجزای یک step بصورت زیر می‌باشند:
        • name: نام معبری که step در آن شروع می‌شود.
        • instruction: یک دستور العمل که مشخص می‌کنند چطور باید وارد این step شد.
        • bearnig_after: زاویه ساعت گرد نسبت به شمال، هنگام خروج از step.
        • type: یک string که نشاندهنده نوع maneuver است.
        • modifier: این پارامتر نوع و جهت تغییر مسیر در هر step را مشخص می‌کند. این مقدار این پارامتر یکی از موارد زیر است:

          right, slight-right, sharp-right, left, slight-left, sharp-left, uturn, straight

        • exit: یک integer نشاندهنده شماره خروجی که باید از آن رفت.
        • rotary_name: نام میدان. اگر step میدان باشد، و نام میدان نیز مشخص باشد، در ریسپانس برخواهد گشت.
        • distance: طول step که به دو صورت عددی و قابل خواندن ارائه می‌شود. در فرمت عددی مقدار فاصله به متر است.
        • duration: زمان سفر در این step که به دو صورت عددی و قابل خواند ارائه می‌شود. در فرمت عددی مقدار زمان به ثانیه است.
        • polyline: ژئومتری هر step که به صورت Encoded polyline ارائه می‌شود.
        • startLocation: نقطه شروع step، با توجه به اینکه یک مسیر به چند step تقسیم می‌شود نقطه شروع هر step در این قسمت به صورت یک آرایه که حاوی دو عدد longitude و latitude هست آورده خواهد شد.