কখনও কখনও, আপনার অ্যাপ ব্যবহারকারীদের যে রুট প্রদান করে তা আপনি প্ল্যান করতে চাইতে পারেন। Routes API বা Route Optimization API থেকে রুট টোকেন ব্যবহার করলে, আপনার পরিকল্পিত রুটের জন্য দুটি জিনিস নির্দিষ্ট করতে সাহায্য করতে পারে:
রুটের জন্য পলিলাইন
আপনার রুটের উদ্দেশ্য
যেমন, আপনার কাছে থাকতে পারে এমন রাউটিং উদ্দেশ্যের কিছু উদাহরণ এখানে দেওয়া হল:
ডেলিভারি করার সময় কমানো: খাবার ডেলিভারি করে এমন কোনও ব্যবসা খাবার ডেলিভারি করার সময় কমাতে চাইতে পারে।
ভ্রমণের সময় বা জ্বালানি খরচ কমানো: কোনও লজিস্টিক ব্যবসা তাদের ড্রাইভারদের দক্ষতা উন্নত করতে এবং জ্বালানি খরচ কমাতে চাইতে পারে।
গন্তব্যে পৌঁছানোর সময় কমানো: কোনও পরিষেবা ডিসপ্যাচ অপারেশন, অপারেটরদের কোনও কাজের অনুরোধে পৌঁছানোর সময় কমাতে চাইতে পারে।
খরচ কমানো এবং নিরাপত্তা উন্নত করা: রাইড-শেয়ারিং ব্যবসা এমন রুট খুঁজতে চাইতে পারে যেখানে রাইডারদের খরচ কম হবে এবং নিরাপত্তার কারণে নির্দিষ্ট কিছু এলাকা এড়িয়ে যাওয়া যাবে।
রুট টোকেন ব্যবহার করে রুট প্ল্যান করার ব্যাপারে আরও তথ্যের জন্য, Routes API-তে রুট টোকেন পান এবং Route Optimization API-তে ট্রানজিশন পলিলাইন ও রুট টোকেন দেখুন।
রুট অবজেক্টিভের জন্য কেন রুট টোকেন ব্যবহার করবেন
Routes API বা Route Optimization API থেকে পাওয়া রুট টোকেনের মাধ্যমে, আপনি প্রদত্ত রুটের উপর আরও নিয়ন্ত্রণ পাবেন:
Navigation SDK-এর ব্যবহারের জন্য আগে থেকে রুট প্ল্যান করুন।
Navigation SDK-এর ব্যবহার করার জন্য সেরা রুট বেছে নিন। আপনি যদি Routes API-তে রুট তৈরি করার সময় রুট টোকেনের অনুরোধ করেন, তাহলে আপনি প্রতিটি তৈরি করা রুটের জন্য একটি করে রুট টোকেন পাবেন। তারপর আপনি যে রুটের জন্য টোকেন ব্যবহার করতে চান সেটি বেছে নিতে পারবেন এবং Navigation SDK-তে পাস করতে পারবেন।
ETA ও দূরত্বের অনুমান সহ আগে থেকে ভাড়ার অনুমান করুন। আসল খরচ ও সময় আলাদা হতে পারে, তবে এই অনুমান প্রত্যাশিত ও আসল রুটের খরচের মধ্যে পার্থক্য কম করে।
আরও উন্নত রুট অবজেক্টিভ নির্দিষ্ট করুন, যেমন ইকো রাউটিং বা সবচেয়ে ছোট রুট।
রুট টোকেন কীভাবে কাজ করে
আপনি Routes API বা Route Optimization API ব্যবহার করে রুটের উদ্দেশ্য অনুযায়ী রুট প্ল্যান করতে পারবেন। আপনি এই API-এর যেকোনও একটি থেকে পাওয়া রুট টোকেন Navigation SDK-তে পাস করতে পারেন, যাতে এটি আপনার গাড়িকে কীভাবে রুট করবে তা নির্দেশ করতে পারে।
আপনি রুট টোকেনের অনুরোধ করলে এবং ব্যবহার করলে কী হয় তা এখানে দেওয়া হল:
Routes API বা Route Optimization API একটি এনক্রিপ্ট করা রুট টোকেন রিটার্ন করে যার মধ্যে রুট পলিলাইন ও রুট অবজেক্টিভ অন্তর্ভুক্ত থাকে।
আপনি নেভিগেশন SDK-তে রুট টোকেন পাস করেন।
আরও দ্রুত রুট উপলভ্য থাকলেও, Navigation SDK আপনার প্ল্যান করা রুটে নেভিগেশন শুরু করে।
ট্রিপ চলাকালীন, ট্রাফিক বা রাস্তার অবস্থা পরিবর্তন হলে অথবা গাড়িটি পরিকল্পিত রুট থেকে সরে গেলে, Navigation SDK একটি নতুন রুট গণনা করে যা আপনার রুট টোকেনে সেট করা রুটের উদ্দেশ্য এবং রাউটিং বিকল্পগুলি অনুসরণ করে।
এই প্রসেস আপনার প্ল্যান করা রুটের কতটা কাছাকাছি আসল রুট আছে তা সর্বাধিক করে।
কেন প্ল্যান করা রুট হুবহু অনুসরণ করা নাও হতে পারে
আপনার প্ল্যান করা রুটে নেভিগেশন শুরু হয়, তবে নিম্নলিখিত পরিস্থিতির মতো ক্ষেত্রে আসল রুট আলাদা হতে পারে:
- গাড়িটি পরিকল্পিত শুরুর পয়েন্ট থেকে দূরে শুরু হয়।
- ট্রিপ চলাকালীন ট্রাফিক বা রাস্তার অবস্থা পরিবর্তন হয়।
- গাড়িটি প্ল্যান করা রুট থেকে বেরিয়ে যায়।
এইসব পার্থক্য আপনার প্ল্যান করা দূরত্ব, ETA এবং ট্রিপের অন্যান্য গুরুত্বপূর্ণ বিষয়ের উপর প্রভাব ফেলতে পারে।
রুট টোকেন ব্যবহার করে রুট প্ল্যান করা
আপনি রুট টোকেন তৈরি করে এবং তারপরে সেটি Navigation SDK-তে পাস করে একটি রুট প্ল্যান করতে পারেন, যেমনটি নিম্নলিখিত ধাপে বর্ণনা করা হয়েছে:
ধাপ ১: Routes API বা Route Optimization API ব্যবহার করে রুট টোকেন তৈরি করুন
নিম্নলিখিত যেকোনও একটি পদ্ধতি ব্যবহার করে রুট টোকেনের জন্য অনুরোধ করুন:
Routes API:
computeRoutes. Routes API-তে রুট টোকেনের জন্য অনুরোধ করা সম্পর্কে আরও তথ্যের জন্য, রুট গণনা করুন এবং রুট টোকেন পান দেখুন।Route Optimization API:
optimizeToursঅথবাbatchOptimizeTours। Route Optimization API-তে রুট টোকেনের অনুরোধ করা সম্পর্কে আরও তথ্যের জন্য, ট্রানজিশন পলিলাইন ও রুট টোকেন দেখুন।
প্রয়োজনীয়তা পূরণ করতে আপনার Routes API অনুরোধ সেট-আপ করুন যাতে রুট টোকেন ব্যবহার করা যায়:
travelMode-কেDRIVEবাTWO_WHEELER-এ সেট করুন।routingPreference-কেTRAFFIC_AWAREবাTRAFFIC_AWARE_OPTIMAL-এ সেট করুন।Viaটি ওয়েপয়েন্ট ব্যবহার করবেন না।
ধাপ ২: Navigation SDK-তে রুট টোকেন পাস করা
রুট টোকেন স্টোর করা: Navigation SDK-তে, রুট টোকেন স্টোর করার জন্য একটি স্ট্রিং সেট-আপ করুন। যেমন:
String routeToken = "route token returned by Routes API";ফেরত পাঠানো রুট টোকেনের উদাহরণ:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }Navigator.setDestinationsWithTokenপদ্ধতি ব্যবহার করে Navigation SDK-তে রুট টোকেন পাস করুন। Navigation SDK রুট টোকেন থেকে গন্তব্য ও রুটিং সংক্রান্ত বিকল্প পায়, তাই আপনাকে ওয়েপয়েন্ট বা ট্রাভেল মোড পাস করতে হয় না।setDestinationsWithToken(String routeToken, RouteDescriptionLoadCallback callback); setDestinationsWithToken(String routeToken, DisplayOptions displayOptions, RouteDescriptionLoadCallback callback);আপনার কলব্যাকে রুটের স্ট্যাটাস চেক করুন। Navigation SDK রুট গণনা করা শেষ করলে, এটি আপনার কলব্যাকে একটি
RouteDescriptionপাস করে। এটি যদি আপনার রুট টোকেনে থাকা গন্তব্যে পৌঁছানোর জন্য গাড়ির লোকেশন থেকে কোনও রুট খুঁজে পায়, তাহলেRouteDescription.getRouteStatusNavigator.RouteStatus.OKরিটার্ন করে এবং আপনি গাইডেন্স শুরু করতে পারেন। যেমন:navigator.setDestinationsWithToken( routeToken, routeDescription -> { if (routeDescription.getRouteStatus() == Navigator.RouteStatus.OK) { navigator.startGuidance(); } });
Navigation SDK আপনার রুট টোকেন প্রয়োগ করেছে কিনা তা চেক করুন
OK-এর রুট স্ট্যাটাস মানে হল, Navigation SDK একটি রুট খুঁজে পেয়েছে,
তবে এটি আপনার প্ল্যান করা রুট নাও হতে পারে। রুটটি আপনার পরিকল্পিত রুটের সাথে মিলছে কিনা তা চেক করতে, আপনার কলব্যাকে এইসব ধাপ অনুসরণ করুন:
কনফার্ম করুন যে
RouteDescription.getRouteStatus-এর রিটার্নNavigator.RouteStatus.OK। নেভিগেশন SDK শুধুমাত্র রুট খুঁজে পেলে রুট টোকেনের বিবরণ প্রদান করে। আরও তথ্যের জন্য, ধাপ ২ দেখুন।RouteTokenExecutionDetailsঅবজেক্ট পেতেRouteDescription.getRouteTokenExecutionDetails-কে কল করুন। সার্ভার রুট টোকেনের বিবরণ না দিলে, এই পদ্ধতিnullরিটার্ন করে।RouteTokenExecutionDetailsঅবজেক্টেgetTokenExecutionStatusকল করুন। এটিTOKEN_SUCCESSFULLY_APPLIEDরিটার্ন করলে, রুটটি আপনার পরিকল্পিত রুটের সাথে মিলে যায়। অন্য কোনও স্ট্যাটাস থাকলে বুঝতে হবে যে আপনার প্ল্যান করা রুটের থেকে এই রুট আলাদা হতে পারে। প্রতিটি স্ট্যাটাস সম্পর্কে আরও তথ্য পেতে, টোকেন এক্সিকিউশন স্ট্যাটাস ভ্যালু দেখুন।ঐচ্ছিক: স্ট্যাটাস
TOKEN_SUCCESSFULLY_APPLIEDহলে, একইRouteTokenExecutionDetailsঅবজেক্টেgetResolvedParametersকল করুন যাতে রুটটি কোন রাউটিং বিকল্প ব্যবহার করে তা চেক করা যায়, যেমন এটি টোল এড়িয়ে যায় কিনা। আরও তথ্যের জন্য, সমাধান করা রাউটিং বিকল্প দেখুন।
টোকেন এক্সিকিউশন স্ট্যাটাস ভ্যালু
রুটের স্ট্যাটাস OK হলে, আপনি যেকোনও টোকেন এক্সিকিউশন স্ট্যাটাসের সাথে
গাইডেন্স শুরু করতে পারবেন। রুটটি আপনার প্ল্যান করা রুট অনুসরণ করে কিনা তা স্ট্যাটাস থেকে জানতে পারবেন।
| স্ট্যাটাস | আপনার প্ল্যান করা রুট অনুসরণ করে | বিবরণ |
|---|---|---|
TOKEN_SUCCESSFULLY_APPLIED |
হ্যাঁ | Navigation SDK আপনার রুট টোকেন প্রয়োগ করেছে। |
TOKEN_APPLIED_WITH_LOCATION_MISMATCH |
ঠিক তা নয় | Navigation SDK আপনার প্ল্যান করা রুট আবার তৈরি করতে পারেনি কারণ রুট অনুরোধে উল্লেখ করা লোকেশন আপনার রুট টোকেনে উল্লেখ করা ম্যাচিং লোকেশন থেকে ২৫ মিটারের বেশি দূরে ছিল। setDestinationsWithToken-এর ক্ষেত্রে, এর অর্থ হল ডিভাইসটি আপনার রুট টোকেনের উৎস থেকে ২৫ মিটারের বেশি দূরে ছিল। রুটটি এখনও আপনার গন্তব্যে যায়, তবে Navigation SDK কনফার্ম করতে পারে না যে এটি আপনার রুট টোকেন থেকে রাউটিং বিকল্পগুলি ব্যবহার করে, যেমন টোল এড়ানো। |
TOKEN_IGNORED_OTHER |
ঠিক তা নয় | অন্য কোনও কারণে Navigation SDK আপনার প্ল্যান করা রুট আবার তৈরি করতে পারেনি, যেমন, আপনার প্ল্যান করা রুটের কোনও রাস্তা বন্ধ হয়ে গেছে। রুটটি এখনও আপনার গন্তব্যে যায়, তবে Navigation SDK কনফার্ম করতে পারে না যে এটি আপনার রুট টোকেন থেকে রাউটিং বিকল্পগুলি ব্যবহার করে, যেমন টোল এড়ানো। |
NO_TOKEN_PROVIDED |
প্রযোজ্য নয় | রুটের অনুরোধে কোনও রুট টোকেন অন্তর্ভুক্ত ছিল না। |
UNKNOWN |
অজানা | স্ট্যাটাস অজানা। |
রুটটি যদি আপনার পরিকল্পিত রুট অনুসরণ না করে এবং সঠিক রুটটি গুরুত্বপূর্ণ হয়, উদাহরণস্বরূপ, কারণ আপনি এটি একটি মূল্য গণনা করতে ব্যবহার করেছেন, স্ট্যাটাস লগ করুন অথবা গাড়ির বর্তমান লোকেশন থেকে একটি নতুন রুট টোকেন অনুরোধ করুন।
সমাধান করা রাউটিং বিকল্প
getResolvedParameters একটি RouteTokenResolvedParameters অবজেক্ট রিটার্ন করে, অথবা
null যদি রাউটিং বিকল্পগুলি উপলভ্য না থাকে। RouteTokenResolvedParameters
-এর নিম্নলিখিত পদ্ধতি আছে:
getTravelMode: রুট যে ট্রাভেল মোড ব্যবহার করে, যেমনRoutingOptions.TravelMode.DRIVING। এছাড়াও, রুট এমন কোনও ভ্রমণ মোড ব্যবহার করলে যার কোনও ম্যাচিং ভ্যালু নেই অথবা ভ্রমণ মোড উপলভ্য না থাকলে, Navigation SDKRoutingOptions.TravelMode.DRIVINGরিপোর্ট করে।getAvoidTolls: রুটে টোল এড়ানো যাবে কিনা।getAvoidHighways: রুটটি হাইওয়ে এড়িয়ে যায় কিনা।getAvoidFerries: রুটে ফেরি এড়ানো হয়েছে কিনা।
উদাহরণ
নিম্নলিখিত কোডের উদাহরণ থেকে বোঝা যায় যে কীভাবে রুট টোকেন ব্যবহার করে রুট প্ল্যান করতে হয়, Navigation SDK টোকেন প্রয়োগ করেছে কিনা তা চেক করতে হয় এবং নির্দেশনা শুরু করতে হয়।
String routeToken = "route token returned by Routes API";
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Handle the result of the route calculation.
RouteDescriptionLoadCallback callback =
routeDescription -> {
// Check whether the Navigation SDK found a route.
if (routeDescription.getRouteStatus() != Navigator.RouteStatus.OK) {
Log.w(TAG, "Route status: " + routeDescription.getRouteStatus());
return;
}
// Check whether the Navigation SDK applied the route token.
RouteTokenExecutionDetails executionDetails =
routeDescription.getRouteTokenExecutionDetails();
if (executionDetails == null) {
Log.i(TAG, "Route token details aren't available.");
} else if (executionDetails.getTokenExecutionStatus()
!= RouteTokenExecutionDetails.TokenExecutionStatus.TOKEN_SUCCESSFULLY_APPLIED) {
Log.w(TAG, "The route might differ from your planned route.");
}
navigator.startGuidance();
};
// Set destinations using the route token.
navigator.setDestinationsWithToken(routeToken, callback);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
navigator.setDestinationsWithToken(routeToken, displayOptions, callback);
রুট টোকেন ও Navigation SDK কীভাবে ইন্টার্যাক্ট করে
Navigation SDK কীভাবে আপনার প্ল্যান করা রুট ম্যানেজ করে তা এখানে দেওয়া হল:
আগে সেট করা যেকোনও গন্তব্য ওভাররাইড করে।
গাড়ির শুরুর লোকেশন ব্যবহার করে।
রাস্তা ও ট্রাফিক পরিস্থিতি অনুযায়ী অ্যাডজাস্ট করে। কেন কোনও প্ল্যান করা রুট হুবহু অনুসরণ করা নাও হতে পারে তা দেখুন।
ট্রিপ চলাকালীন নতুন রুট গণনা করার সময় সহ, আপনার অ্যাপে নিম্নলিখিত সেটিংসের পরিবর্তে আপনার রুট টোকেনে সেট করা রাউটিং বিকল্প ব্যবহার করে:
RoutingOptions.avoidHighwaysRoutingOptions.avoidTollsRoutingOptions.avoidFerriesNavigator.setLicensePlateRestrictionInfo- আপনার অ্যাপে সেট করা ভ্রমণ মোড
রুট গণনা বা অ্যাডজাস্ট করার সময় এই সেটিংস অনুসরণ করে:
- আপনার রুট টোকেন থেকে রুটের উদ্দেশ্য, যেমন ইকো রাউটিং বা সবচেয়ে ছোট রুট। Navigation SDK-কে রুট অ্যাডজাস্ট করতে হলে, এটি রুট টোকেনের অনুরোধ করার সময় আপনার উল্লেখ করা রুট অবজেক্টিভ ব্যবহার করে।
- আপনার রুট টোকেন থেকে ওয়েপয়েন্ট-সম্পর্কিত বিকল্প, যেমন রাস্তার-দিক সংক্রান্ত পছন্দ।