گاهی اوقات، ممکن است بخواهید مسیری را که برنامه شما در اختیار کاربران قرار می دهد، برنامه ریزی کنید. استفاده از نشانه مسیر از Routes API، Routes Preferred API، یا Route Optimization API می تواند به شما کمک کند تا دو مورد را برای مسیر برنامه ریزی شده خود مشخص کنید:
پلی لاین برای مسیر
اهداف مسیر شما
به عنوان مثال، در اینجا چند نمونه از اهداف مسیریابی که ممکن است داشته باشید آورده شده است:
زمان تحویل را به حداقل برسانید : یک کسب و کار تحویل غذا ممکن است بخواهد زمان تحویل غذا را به حداقل برساند.
زمان سفر یا مصرف سوخت را به حداقل برسانید : یک تجارت لجستیک ممکن است بخواهد کارایی رانندگان خود را بهبود بخشد و هزینه سوخت آنها را کاهش دهد.
زمان رسیدن به مقصد را به حداقل برسانید : یک عملیات ارسال خدمات ممکن است بخواهد زمان لازم برای رسیدن اپراتورها به درخواست کار را به حداقل برساند.
هزینه های کمتر و بهبود ایمنی : یک کسب و کار اشتراک سوار ممکن است بخواهد مسیری را پیدا کند که هزینه کمتری برای سوارکاران داشته باشد و به دلایل ایمنی از مناطق خاصی اجتناب کند.
برای اطلاعات بیشتر در مورد برنامه ریزی مسیر با استفاده از نشانه مسیر، به درخواست نشانه مسیر در Routes API و Transition Polylines and Route Tokens در Route Optimization API مراجعه کنید.
چرا از نشانه مسیر برای اهداف مسیر استفاده کنیم؟
با یک نشانه مسیر از Routes API، Routes Preferred API، یا Route Optimization API، کنترل بیشتری روی مسیر ارائه شده دارید:
از قبل مسیری را برای Navigation SDK برنامه ریزی کنید تا در صورت امکان از آن استفاده کنید.
بهترین مسیر را برای استفاده از Navigation SDK انتخاب کنید . اگر هنگام ایجاد مسیرها در Routes API، توکن های مسیر را درخواست کنید، برای هر مسیر تولید شده یک نشانه مسیر دریافت می کنید. سپس میتوانید رمزی را برای مسیری که میخواهید هنگام ارسال آن به Navigation SDK استفاده کنید، انتخاب کنید.
قیمت را از قبل، از جمله برآورد ETA و مسافت، تخمین بزنید . در حالی که هزینه و زمان واقعی ممکن است متفاوت باشد، این برآورد فاصله بین هزینه مورد انتظار و هزینه واقعی مسیر را کاهش می دهد.
اهداف مسیر پیشرفتهتری مانند مسیریابی سازگار با محیط زیست یا کوتاهترین مسیر را مشخص کنید .
نحوه عملکرد توکن های مسیر
میتوانید از Routes API، Routes Preferred API یا Route Optimization API برای برنامهریزی مسیر با استفاده از اهداف مسیر استفاده کنید. میتوانید یک نشانه مسیری که از هر یک از این APIها بازگردانده شده است را به Navigation SDK ارسال کنید تا نحوه مسیریابی وسیله نقلیه شما را راهنمایی کنید.
هنگامی که یک نشانه مسیر را درخواست می کنید و از آن استفاده می کنید چه اتفاقی می افتد:
Routes API، Routes Preferred API یا Route Optimization یک نشانه مسیر رمزگذاری شده را برمی گرداند که شامل چند خط مسیر و اهداف مسیر است.
رمز مسیر را به Navigation SDK منتقل می کنید.
Navigation SDK مسیر را بازیابی می کند یا اگر مسیر به دلیل تغییر شرایط موجود نباشد، بهترین مسیر منطبق را بازیابی می کند.
در حین رانندگی مسیر، اگر ترافیک یا سایر شرایط جاده تغییر کند، یا اگر وسیله نقلیه از مسیر برنامه ریزی شده منحرف شود، مسیرهای اصلاح شده به طور مداوم تلاش می کنند تا بهترین مسیر را بر اساس اهداف مسیر در نشانه مطابقت دهند.
این فرآیند میزان نزدیکی مسیر واقعی به مسیر برنامه ریزی شده شما را به حداکثر می رساند.
چرا یک مسیر برنامه ریزی شده ممکن است دقیقا دنبال نشود
مسیر برنامه ریزی شده و اهداف مسیر خود را به عنوان دستورالعمل هایی که باید دنبال کنید در نظر بگیرید: آنها تجویزی نیستند. ممکن است به دلیل تفاوت در شرایط جاده، مکان شروع یا سایر پارامترهایی که از زمان ایجاد مسیر برنامه ریزی شده تغییر کرده است، بین مسیر برنامه ریزی شده خود و مسیر ارائه شده توسط ناوبری هدایت شده تفاوت مشاهده کنید. این تفاوت ممکن است منجر به عدم تطابق بین اهداف برنامه ریزی شده و واقعی شما برای مسافت و ETA، در میان سایر ویژگی های مهم سفر شود.
یک مسیر را با استفاده از نشانه مسیر برنامه ریزی کنید
همانطور که در مراحل زیر توضیح داده شده است، می توانید یک مسیر را با ایجاد یک نشانه مسیر و سپس ارسال آن به Navigation SDK برنامه ریزی کنید:
مرحله 1: با استفاده از Routes API، Routes Preferred API یا Route Optimization یک نشانه مسیر ایجاد کنید.
یک نشانه مسیر را با یکی از روش های زیر درخواست کنید :
Routes API :
computeRoutes
. برای اطلاعات بیشتر درباره درخواست نشانه مسیر در Routes API، به محاسبه مسیر و درخواست نشانه مسیر مراجعه کنید.Routes Preferred API :
computeCustomRoutes
. برای اطلاعات بیشتر در مورد درخواست نشانه مسیر در Routes Preferred API، به برنامه ریزی مسیر مراجعه کنید.Route Optimization API :
optimizeTours
یاbatchOptimizeTours
. برای اطلاعات بیشتر درباره درخواست نشانه مسیر در Route Optimization API، به Polylines و Route Tokens مراجعه کنید.
Routes API یا Routes Preferred API درخواست خود را برای برآورده کردن الزامات استفاده از یک نشانه مسیر تنظیم کنید :
-
travel_mode
رویDRIVING
یاTWO_WHEELER
تنظیم کنید -
routing_preference
رویTRAFFIC_AWARE
یاTRAFFIC_AWARE_OPTIMAL
تنظیم کنید -
Via
ایستگاه های بین راه استفاده نکنید
-
مرحله 2: رمز مسیر را به Navigation SDK منتقل کنید
ذخیره نشانه مسیر : در Navigation SDK، یک رشته برای ذخیره نشانه مسیر تنظیم کنید. به عنوان مثال:
let routeToken = "route token returned by Routes API"
نمونه ای از نشانه مسیر برگشتی:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
رمز مسیر را با استفاده از روش
mapView.navigator setDestinations
به Navigation SDK منتقل کنید و همان نقاط بین مقصدی را که هنگام ایجاد نشانه مسیر استفاده کردید مشخص کنید:mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
متد Navigator.setDestinations
وضعیت درخواست را برمی گرداند. اگر مسیری از مکان کاربر به مقصد مشخص شده پیدا شود، RouteStatus.OK
برمیگرداند.
برای اطلاعات بیشتر در مورد این روش، به GMSNavigator.setDestinations
مراجعه کنید.
مثال
مثال های کد زیر نحوه بازیابی یک مسیر برنامه ریزی شده را نشان می دهد.
سویفت
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: {...})
هدف-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate 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
در اینجا نحوه تعامل مسیر تولید شده توسط Navigation SDK و مسیر برنامه ریزی شده در نشانه مسیر آمده است:
هر مقصدی که قبلاً تنظیم شده بود را لغو می کند .
از محل شروع خودرو استفاده می کند .
برای شرایط جاده و ترافیک تنظیم می شود . ببینید چرا یک مسیر برنامه ریزی شده ممکن است دقیقا دنبال نشود .
گزینه های مرتبط با مسیریابی زیر را به عنوان غیر ضروری نادیده می گیرد :
-
avoidsHighways
-
avoidsTolls
-
avoidsFerries
-
licensePlateRestriction
-
دنبال می کند :
گزینههای مرتبط با ایستگاههای راه ، مانند ترجیح کنار جاده.
اهداف مسیر اگر Navigation SDK باید مسیر برگشتی را تنظیم کند، از اهداف مسیری که هنگام درخواست نشانه مسیر مشخص کردهاید استفاده میکند. به همین دلیل، باید از همان گزینه های مربوط به ایستگاه بین راه استفاده کنید که در Routes API مشخص کرده اید.