কখনও কখনও, আপনার অ্যাপ ব্যবহারকারীদের যে রুট প্রদান করে তা আপনি প্ল্যান করতে চাইতে পারেন। 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-তে পাস করতে পারবেন।
ETA ও দূরত্বের অনুমান সহ আগে থেকে ভাড়ার অনুমান করা। আসল খরচ ও সময় আলাদা হতে পারে, তবে এই অনুমান প্রত্যাশিত ও আসল রুটের খরচের মধ্যে পার্থক্য কম করে।
আরও উন্নত রুট অবজেক্টিভ নির্দিষ্ট করুন, যেমন ইকো রাউটিং বা সবচেয়ে ছোট রুট।
রুট টোকেন কীভাবে কাজ করে
আপনি Routes API, Routes Preferred API বা Route Optimization API ব্যবহার করে রুটের উদ্দেশ্য অনুযায়ী রুট প্ল্যান করতে পারবেন। আপনার গাড়ি কীভাবে রুট করবে তা নির্দেশ করার জন্য আপনি এই APIগুলির যেকোনও একটি থেকে ফেরত আসা রুট টোকেন Navigation SDK-তে পাস করতে পারেন।
আপনি রুট টোকেন ব্যবহার ও অনুরোধ করলে কী হয় তা এখানে দেওয়া হল:
Routes API, Routes Preferred API বা Route Optimization API একটি এনক্রিপ্ট করা রুট টোকেন ফেরত দেয় যাতে রুট পলিলাইন ও রুটের উদ্দেশ্য অন্তর্ভুক্ত থাকে।
আপনি Navigation SDK-তে রুট টোকেন পাস করেন।
Navigation SDK আপনার প্ল্যান করা রুটে নেভিগেশন শুরু করে, এমনকি আরও দ্রুত রুট উপলভ্য থাকলেও।
ট্রিপ চলাকালীন, ট্রাফিক বা রাস্তার অবস্থা পরিবর্তন হলে অথবা গাড়িটি পরিকল্পিত রুট থেকে সরে গেলে, Navigation SDK একটি নতুন রুট গণনা করে যা আপনার রুট টোকেনে সেট করা রুটের উদ্দেশ্য এবং রাউটিং বিকল্পগুলি অনুসরণ করে।
এই প্রসেস আপনার প্ল্যান করা রুটের সাথে আসল রুট কতটা কাছাকাছি তা সর্বাধিক করে।
কেন একটি পরিকল্পিত রুট হুবহু অনুসরণ করা নাও হতে পারে
আপনার প্ল্যান করা রুটে নেভিগেশন শুরু হয়, তবে নিম্নলিখিত পরিস্থিতিতে আসল রুট আলাদা হতে পারে:
- গাড়িটি পরিকল্পিত শুরুর পয়েন্ট থেকে দূরে শুরু হয়।
- ট্রিপ চলাকালীন ট্রাফিক বা রাস্তার অবস্থা পরিবর্তন হয়।
- গাড়িটি প্ল্যান করা রুট থেকে সরে যায়।
এইসব পার্থক্যের কারণে দূরত্ব, ETA এবং আপনার প্ল্যান করা ট্রিপের অন্যান্য গুরুত্বপূর্ণ বিষয়ে প্রভাব পড়তে পারে।
রুট টোকেন ব্যবহার করে রুট প্ল্যান করা
আপনি রুট টোকেন তৈরি করে এবং তারপরে এটি Navigation SDK-তে পাস করে একটি রুট প্ল্যান করতে পারেন, যেমনটি নিম্নলিখিত ধাপে বর্ণনা করা হয়েছে:
ধাপ ১: Routes API, Routes Preferred API বা Route Optimization API ব্যবহার করে রুট টোকেন তৈরি করুন
নিম্নলিখিত যেকোনও একটি পদ্ধতি ব্যবহার করে রুট টোকেনের অনুরোধ করুন:
Routes API:
computeRoutes। Routes API-তে রুট টোকেনের জন্য অনুরোধ করা সম্পর্কে আরও তথ্যের জন্য, রুট গণনা করুন এবং রুট টোকেন পান দেখুন।Routes Preferred API:
computeCustomRoutes. Routes Preferred API-তে রুট টোকেনের জন্য অনুরোধ করা সম্পর্কে আরও তথ্যের জন্য, রুটের পরিকল্পনা করুন দেখুন।Route Optimization API:
optimizeToursঅথবাbatchOptimizeTours। Route Optimization API-তে রুট টোকেনের অনুরোধ করা সম্পর্কে আরও তথ্য পেতে, ট্রানজিশন পলিলাইন ও রুট টোকেন দেখুন।
রুট টোকেন ব্যবহার করার প্রয়োজনীয়তা পূরণ করতে আপনার Routes API বা Routes Preferred API অনুরোধ সেট-আপ করুন:
travelMode-কেDRIVEবাTWO_WHEELER-এ সেট করুন।routingPreference-কেTRAFFIC_AWAREবাTRAFFIC_AWARE_OPTIMAL-এ সেট করুন।Viaটি ওয়েপয়েন্ট ব্যবহার করবেন না।
ধাপ ২: নেভিগেশন SDK-তে রুট টোকেন পাস করা
রুট টোকেন স্টোর করা: Navigation SDK-তে, রুট টোকেন স্টোর করার জন্য একটি স্ট্রিং সেট-আপ করুন। যেমন:
let routeToken = "route token returned by Routes API"ফেরত পাঠানো রুট টোকেনের উদাহরণ:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }mapView.navigator.setDestinationsব্যবহার করে Navigation SDK-তে রুট টোকেন পাস করুন। রুট তৈরি করার সময় আপনি যে গন্তব্যের ওয়েপয়েন্ট ব্যবহার করেছিলেন, সেটিই উল্লেখ করুন 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: {...})
Objective-C
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 কীভাবে ইন্টার্যাক্ট করে
নেভিগেশন SDK কীভাবে আপনার প্ল্যান করা রুট ম্যানেজ করে তা এখানে দেওয়া হল:
আগে সেট করা যেকোনও গন্তব্য ওভাররাইড করে।
গাড়ির শুরুর লোকেশন ব্যবহার করে।
রাস্তা ও ট্রাফিক পরিস্থিতি অনুযায়ী অ্যাডজাস্ট করে। কেন কোনও প্ল্যান করা রুট হুবহু অনুসরণ করা নাও হতে পারে তা দেখুন।
আপনার অ্যাপে নিম্নলিখিত সেটিংসের পরিবর্তে আপনার রুট টোকেনে সেট করা রাউটিং বিকল্প ব্যবহার করে, যার মধ্যে ট্রিপ চলাকালীন নতুন রুট গণনা করার সময়ও অন্তর্ভুক্ত:
avoidsHighwaysavoidsTollsavoidsFerrieslicensePlateRestriction- আপনার অ্যাপে সেট করা ভ্রমণ মোড
রুট গণনা বা অ্যাডজাস্ট করার সময় এইসব সেটিংস অনুসরণ করে:
আপনার রুট টোকেন থেকে রুটের উদ্দেশ্য, যেমন ইকো রাউটিং বা সবচেয়ে ছোট রুট। Navigation SDK-কে রুট অ্যাডজাস্ট করতে হলে, এটি রুট টোকেনের অনুরোধ করার সময় আপনার উল্লেখ করা রুট অবজেক্টিভ ব্যবহার করে।
আপনার অ্যাপ থেকে ওয়েপয়েন্ট-সম্পর্কিত বিকল্প, যেমন রাস্তার-পাশে পছন্দ। রুট টোকেনের অনুরোধ করার সময় আপনি যে ওয়েপয়েন্ট-সম্পর্কিত বিকল্প উল্লেখ করেছিলেন, সেটিই ব্যবহার করুন।