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

گاهی اوقات ممکن است بخواهید مسیری را که برنامه‌تان به کاربران ارائه می‌دهد برنامه‌ریزی کنید. استفاده از ژتون مسیر از 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، توکن‌های مسیر را درخواست کنید، برای هر مسیر تولیدشده یک توکن مسیر دریافت می‌کنید. سپس می‌توانید هنگام ارسال به Navigation SDK، نشان مربوط به مسیر مدنظرتان را برای استفاده انتخاب کنید.

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

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

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

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

وقتی یک توکن مسیر درخواست و استفاده می‌کنید، این اتفاق می‌افتد:

  1. ‫Routes API،‏ Routes Preferred API، یا Route Optimization API یک رمز مسیر رمزگذاری‌شده برمی‌گرداند که شامل چندخطی مسیر و اهداف مسیر است.

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

  3. کیت توسعه نرم‌افزار ناوبری، ناوبری را در مسیر برنامه‌ریزی‌شده شما شروع می‌کند، حتی اگر مسیر سریع‌تری دردسترس باشد.

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

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

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

ناوبری در مسیر برنامه‌ریزی‌شده شما شروع می‌شود، اما مسیر واقعی می‌تواند در شرایطی مانند موارد زیر با آن متفاوت باشد:

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

این تفاوت‌ها می‌تواند بر مسافت، زمان تخمینی رسیدن، و دیگر ویژگی‌های مهم سفر که برای آن برنامه‌ریزی کرده‌اید تأثیر بگذارد.

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

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

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

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

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

    • travelMode را روی DRIVE یا TWO_WHEELER تنظیم کنید.
    • routingPreference را روی 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
    • حالت سفر تنظیم‌شده در برنامه‌تان
  • هنگام محاسبه یا تنظیم مسیر، از این تنظیمات پیروی می‌کند:

    • اهداف مسیر از توکن مسیر شما، مانند مسیریابی بوم‌سازگار یا کوتاه‌ترین مسیر. اگر Navigation SDK مجبور به تنظیم مسیر باشد، از اهداف مسیری که هنگام درخواست کردن توکن مسیر مشخص کرده‌اید استفاده می‌کند.

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