گاهی اوقات، ممکن است بخواهید مسیری را که برنامه شما به کاربران ارائه میدهد، برنامهریزی کنید. استفاده از یک توکن مسیر از API Routes، API Routes Preferred یا API بهینهسازی مسیر میتواند به شما کمک کند تا دو مورد را برای مسیر برنامهریزی شده خود مشخص کنید:
یک چندخطی برای مسیر
اهداف مسیر شما
برای مثال، در اینجا چند نمونه از اهداف مسیریابی که ممکن است داشته باشید، آورده شده است:
به حداقل رساندن زمان تحویل : یک کسب و کار که غذا تحویل میدهد، ممکن است بخواهد زمان لازم برای تحویل غذا را به حداقل برساند.
به حداقل رساندن زمان سفر یا مصرف سوخت : یک کسب و کار لجستیکی ممکن است بخواهد کارایی رانندگان خود را بهبود بخشد و هزینههای سوخت خود را کاهش دهد.
به حداقل رساندن زمان رسیدن به مقصد : یک عملیات اعزام سرویس ممکن است بخواهد زمان لازم برای رساندن اپراتورها به یک درخواست کار را به حداقل برساند.
هزینههای کمتر و بهبود ایمنی : یک کسبوکار اشتراکگذاری خودرو ممکن است بخواهد مسیری را پیدا کند که برای مسافران هزینه کمتری داشته باشد و به دلایل ایمنی از مناطق خاصی اجتناب کند.
برای اطلاعات بیشتر در مورد برنامهریزی مسیر با استفاده از توکن مسیر، به بخش درخواست توکن مسیر در Routes API و بخش Transition Polylines و توکنهای مسیر در Route Optimization API مراجعه کنید.
چرا از توکن مسیر برای اهداف مسیر استفاده کنیم؟
با استفاده از توکن مسیر از Routes API، Routes Preferred API یا Route Optimization API، کنترل بیشتری بر مسیر ارائه شده خواهید داشت:
از قبل مسیری را برای استفاده از Navigation SDK در صورت امکان برنامهریزی کنید .
بهترین مسیر را برای استفادهی Navigation SDK انتخاب کنید . اگر هنگام تولید مسیرها در Routes API، توکنهای مسیر را درخواست کنید، برای هر مسیر تولید شده یک توکن مسیر دریافت خواهید کرد. سپس میتوانید توکن مسیری را که میخواهید هنگام ارسال به Navigation SDK استفاده کنید، انتخاب کنید.
قیمت را از قبل تخمین بزنید ، از جمله تخمینهای ETA و مسافت. اگرچه هزینه و زمان واقعی ممکن است متفاوت باشد، اما این تخمین، شکاف بین هزینه مسیر مورد انتظار و واقعی را کاهش میدهد.
اهداف پیشرفتهتری برای مسیر، مانند مسیریابی اقتصادی یا کوتاهترین مسیر، مشخص کنید .
نحوه کار توکنهای مسیر
شما میتوانید از API مسیرها، API مسیرهای ترجیحی یا API بهینهسازی مسیر برای برنامهریزی مسیر با استفاده از اهداف مسیر استفاده کنید. میتوانید یک توکن مسیر که از هر یک از این APIها برگردانده شده است را به SDK ناوبری ارسال کنید تا نحوه مسیریابی وسیله نقلیه شما را راهنمایی کند.
وقتی یک توکن مسیر را درخواست و استفاده میکنید، چه اتفاقی میافتد؟
API مسیرها، API مسیرهای ترجیحی یا API بهینهسازی مسیر، یک توکن مسیر رمزگذاری شده را برمیگرداند که شامل چندخطی مسیر و اهداف مسیر است.
شما توکن مسیر را به SDK ناوبری (Navigation SDK) ارسال میکنید.
کیت توسعه نرمافزار ناوبری (Navigation SDK) مسیر را بازیابی میکند، یا اگر مسیر به دلیل تغییر شرایط در دسترس نباشد، بهترین مسیر منطبق را بازیابی میکند.
هنگام رانندگی در مسیر، اگر ترافیک یا سایر شرایط جاده تغییر کند، یا اگر وسیله نقلیه از مسیر برنامهریزی شده منحرف شود، مسیرهای اصلاح شده به طور مداوم تلاش میکنند تا بر اساس اهداف مسیر در توکن، با بهترین مسیر مطابقت داشته باشند.
این فرآیند، میزان نزدیکی مسیر واقعی به مسیر برنامهریزیشده شما را به حداکثر میرساند.
چرا ممکن است یک مسیر برنامهریزیشده دقیقاً دنبال نشود
مسیر برنامهریزیشده و اهداف مسیر خود را به عنوان دستورالعملهایی برای دنبال کردن در نظر بگیرید: آنها تجویزی نیستند. ممکن است به دلیل تفاوت در شرایط جاده، محل شروع یا سایر پارامترهایی که از زمان ایجاد مسیر برنامهریزیشده تغییر کردهاند، بین مسیر برنامهریزیشده و مسیر ارائهشده توسط ناوبری هدایتشده تفاوتی مشاهده کنید. این تفاوت ممکن است منجر به عدم تطابق بین اهداف برنامهریزیشده و واقعی شما برای مسافت و ETA، در میان سایر ویژگیهای مهم سفر، شود.
سناریوهای چند مرحلهای
سناریوهای چند مرحلهای
متد setDestinations از سفرهای چند توقفه پشتیبانی نمیکند. برای پیشبرد نقطهی مسیر به مرحلهی بعدی سفر، از continueToNextDestination() استفاده کنید.
با استفاده از یک توکن مسیر، مسیری را برنامهریزی کنید
شما میتوانید با ایجاد یک توکن مسیر و سپس ارسال آن به SDK ناوبری، همانطور که در مراحل زیر توضیح داده شده است، یک مسیر را برنامهریزی کنید:
مرحله ۱: ایجاد یک توکن مسیر با استفاده از Routes API، Routes Preferred API یا Route Optimization API
با یکی از روشهای زیر، یک توکن مسیر درخواست کنید :
API مسیرها :
computeRoutes. برای اطلاعات بیشتر در مورد درخواست توکن مسیر در API مسیرها، به Compute a route و Request a route token مراجعه کنید.API مسیرهای ترجیحی :
computeCustomRoutes. برای اطلاعات بیشتر در مورد درخواست توکن مسیر در API مسیرهای ترجیحی، به Plan a route مراجعه کنید.API بهینهسازی مسیر :
optimizeToursیاbatchOptimizeTours. برای اطلاعات بیشتر در مورد درخواست توکن مسیر در API بهینهسازی مسیر، به Transition Polylines و Route Tokens مراجعه کنید.
درخواست Routes API یا Routes Preferred API خود را طوری تنظیم کنید که الزامات استفاده از توکن مسیر را برآورده کند:
-
travel_modeرا رویDRIVINGیاTWO_WHEELERتنظیم کنید -
routing_preferenceرویTRAFFIC_AWAREیاTRAFFIC_AWARE_OPTIMALتنظیم کنید. -
Viawaypoints استفاده نکنید
-
مرحله ۲: توکن مسیر را به SDK ناوبری ارسال کنید
ذخیره توکن مسیر : در کیت توسعه نرمافزار (SDK) ناوبری، یک رشته برای ذخیره توکن مسیر تنظیم کنید. برای مثال:
String routeToken = "route token returned by Routes API";
مثالی از توکن مسیر برگشتی:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }توکن مسیر را با استفاده از متد
Navigator.setDestinationsبه Navigation SDK ارسال کنید، و همان نقاط مسیر مقصدی را که هنگام ایجاد توکن مسیر استفاده کردهاید، مشخص کنید:setDestinations(List
destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions); برای مثال:
CustomRoutesOptions customRoutesOptions = CustomRoutesOptions.builder() .setRouteToken(routeToken) .setTravelMode(TravelMode.DRIVING) .build();
متد Navigator.setDestinations وضعیت درخواست را برمیگرداند. اگر مسیری را از موقعیت وسیله نقلیه به مقصد داده شده پیدا کند، RouteStatus.OK برمیگرداند.
برای اطلاعات بیشتر در مورد این متد، به Navigator.setDestinations مراجعه کنید.
مثال
مثال کد زیر نحوه مشخص کردن یک مسیر برنامهریزیشده با استفاده از یک توکن مسیر را نشان میدهد.
ArrayList <Waypoint> destinations = Lists.newArrayList();
Waypoint waypoint1 =
Waypoint.builder()
.setLatLng(10, 20)
.setTitle("title")
.setVehicleStopover(true)
.build();
destinations.add(waypoint1);
Waypoint waypoint2 =
Waypoint.builder()
.setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(waypoint2);
String routeToken = "route token returned by Routes API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(TravelMode.DRIVING)
.build();
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Existing flow for requesting routes.
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions, displayOptions);
نحوه تعامل توکنهای مسیر و SDK ناوبری
در اینجا نحوه تعامل مسیر تولید شده توسط SDK ناوبری و مسیر برنامهریزی شده در توکن مسیر نشان داده شده است:
هر مقصد از پیش تعیینشدهای را لغو میکند .
از محل شروع حرکت وسیله نقلیه استفاده میکند .
شرایط جاده و ترافیک را تنظیم میکند . ببینید چرا ممکن است یک مسیر برنامهریزیشده دقیقاً دنبال نشود .
گزینههای مرتبط با مسیریابی زیر را به دلیل غیرضروری بودن نادیده میگیرد :
-
avoidsHighways -
avoidsTolls -
avoidsFerries -
licensePlateRestriction
-
دنبال میکند :
گزینههای مربوط به نقطه مسیر ، مانند ترجیح کنار جاده.
اهداف مسیر . اگر SDK ناوبری مجبور به تنظیم مسیر برگشتی باشد، از اهداف مسیری که هنگام درخواست توکن مسیر مشخص کردهاید استفاده میکند. به همین دلیل، باید از همان گزینههای مربوط به نقطه مسیر که در API مسیرها مشخص کردهاید، استفاده کنید.