برنامه‌ریزی مسیر

گاهی اوقات ممکن است بخواهید مسیری را که برنامه‌تان به کاربران ارائه می‌دهد برنامه‌ریزی کنید. استفاده از ژتون مسیر از Routes API،‏ Routes Preferred API، یا Route Optimization API می‌تواند به شما کمک کند دو چیز را برای مسیر برنامه‌ریزی‌شده‌تان مشخص کنید:

  • چندخطی برای مسیر

  • اهداف مسیر شما

برای مثال، در اینجا چند نمونه از اهداف مسیریابی که ممکن است داشته باشید آورده شده است:

  • به‌حداقل رساندن زمان تحویل: کسب‌وکاری که غذا تحویل می‌دهد ممکن است بخواهد زمان تحویل غذا را به حداقل برساند.

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

  • به‌حداقل رساندن زمان رسیدن به مقصد: عملیات اعزام خدمات ممکن است بخواهد زمان لازم برای رساندن اپراتورها به درخواست کار را به حداقل برساند.

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

برای اطلاعات بیشتر درباره برنامه‌ریزی مسیر بااستفاده از یک کد مسیر، به درخواست یک کد مسیر در Routes API و چندخطی‌های انتقال و کدهای مسیر در Route Optimization API مراجعه کنید.

چرا باید از کد مسیر برای اهداف مسیر استفاده کرد

بااستفاده از کد مسیر از Routes API، Routes Preferred API، یا Route Optimization API، کنترل بیشتری بر مسیر ارائه‌شده دارید:

  • درصورت امکان، مسیر را ازقبل برنامه‌ریزی کنید تا «کیت توسعه نرم‌افزار پیمایش» از آن استفاده کند.

  • بهترین مسیر را برای استفاده Navigation SDK انتخاب کنید. اگر هنگام تولید مسیرها در «میانای برنامه‌سازی کاربردی مسیرها»، توکن‌های مسیر را درخواست کنید، برای هر مسیر تولیدشده یک توکن مسیر دریافت می‌کنید. سپس می‌توانید هنگام ارسال به Navigation SDK، نشان مربوط به مسیر مدنظرتان را برای استفاده انتخاب کنید.

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

  • هدف‌های مسیر پیشرفته‌تری را مشخص کنید، مثل مسیریابی زیست‌محیطی یا کوتاه‌ترین مسیر.

نحوه عملکرد نشان‌های مسیر

می‌توانید از Routes API،‏ Routes Preferred API، یا Route Optimization API برای برنامه‌ریزی مسیر بااستفاده از اهداف مسیر استفاده کنید. می‌توانید یک توکن مسیر برگشتی از هریک از این میاناهای برنامه‌سازی کاربردی را به کیت توسعه نرم‌افزار ناوبری ارسال کنید تا نحوه مسیریابی خودرو شما را راهنمایی کند.

در اینجا آنچه هنگام درخواست و استفاده از یک نشانه مسیر اتفاق می‌افتد آورده شده است:

  1. «میانای برنامه‌سازی کاربردی مسیرها»، «میانای برنامه‌سازی کاربردی مسیرهای ترجیحی»، یا «میانای برنامه‌سازی کاربردی بهینه‌سازی مسیر» کد مسیر رمزگذاری‌شده‌ای را برمی‌گرداند که شامل چندخطی مسیر و اهداف مسیر است.

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

  3. کیت توسعه نرم‌افزار پیمایش مسیر را بازیابی می‌کند، یا اگر مسیر به‌دلیل تغییر شرایط دردسترس نباشد، بهترین مسیر منطبق را بازیابی می‌کند.

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

این فرایند حداکثر نزدیکی مسیر واقعی به مسیر برنامه‌ریزی‌شده را تضمین می‌کند.

چرا ممکن است مسیر برنامه‌ریزی‌شده دقیقاً دنبال نشود

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

برنامه‌ریزی مسیر بااستفاده از کد مسیر

می‌توانید با ایجاد یک توکن مسیر و سپس ارسال آن به Navigation SDK، مسیری را برنامه‌ریزی کنید، همان‌طور که در مراحل زیر توضیح داده شده است:

مرحله ۱: ایجاد کردن یک توکن مسیر بااستفاده از Routes API،‏ Routes Preferred API، یا Route Optimization API

  1. با یکی از روش‌های زیر یک توکن مسیر درخواست کنید:

  2. برای برآورده کردن الزامات استفاده از کد مسیر، درخواست Routes API یا Routes Preferred API را راه‌اندازی کنید:

    • ‫travel_mode را روی DRIVE یا TWO_WHEELER تنظیم کنید
    • routing_preference را روی TRAFFIC_AWARE یا TRAFFIC_AWARE_OPTIMAL تنظیم کنید
    • از Via نقطه بین راه استفاده نکنید

مرحله ۲: ارسال کردن کد مسیر به Navigation SDK

  1. ذخیره کردن کد مسیر: در «کیت توسعه نرم‌افزار پیمایش»، رشته‌ای را برای ذخیره کردن کد مسیر راه‌اندازی کنید. برای مثال:

    let routeToken = "route token returned by Routes API"
    

    نمونه‌ای از کد مسیر برگردانده‌شده:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. بااستفاده از mapView.navigator.setDestinations، نشانه مسیر را به «کیت توسعه نرم‌افزار پیمایش» ارسال کنید. همان نقطه‌مسیرهای مقصدی را که هنگام ایجاد مسیر استفاده کردید مشخص کنید token:

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
    

    روش setDestinations وضعیت درخواست را به فراخوان برگشتی آن منتقل می‌کند. اگر مسیری از مکان کاربر به مقصد داده‌شده پیدا کند، وضعیت .OK (GMSRouteStatusOK) است.

سناریوهای چندایستگاهی

می‌توانید حداکثر ۲۵ نقطه‌مسیر پیکربندی کنید.

روش setDestinations از سفرهای چندایستگاهی پشتیبانی نمی‌کند. از continueToNextDestinationWithCompletion() برای پیش بردن نقطه‌مسیر به بخش بعدی سفر استفاده کنید.

مثال

نمونه کدهای زیر نحوه بازیابی مسیر برنامه‌ریزی‌شده را نشان می‌دهد.

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!

let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

آبجکتیو-سی

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:location title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
                                                                            title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";

[mapView.navigator setDestinations:@[waypoint1, waypoint2]
                        routeToken:routeToken
                          callback:^(GMSRouteStatus routeStatus){...}];

نحوه تعامل نشان‌های مسیر و کیت توسعه نرم‌افزار پیمایش

در اینجا نحوه تعامل مسیر تولیدشده توسط Navigation SDK و مسیر برنامه‌ریزی‌شده در کد مسیر آورده شده است:

  • هر مقصد ازپیش تنظیم‌شده‌ای را لغو می‌کند.

  • از مکان شروع خودرو استفاده می‌کند.

  • تنظیم برای شرایط جاده و ترافیک. ببینید چرا ممکن است مسیر برنامه‌ریزی‌شده دقیقاً دنبال نشود.

  • گزینه‌های مربوط به مسیریابی زیر را به‌عنوان غیرضروری نادیده می‌گیرد:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • دنبال‌کنندگان:

    • گزینه‌های مربوط به نقطه توقف، مثل اولویت کنار جاده.

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