একটি রুট পরিকল্পনা করুন

কখনও কখনও, আপনি আপনার অ্যাপ ব্যবহারকারীদের যে রুটটি দেখাবে, তা পরিকল্পনা করতে চাইতে পারেন। Routes API, Routes Preferred API, বা Route Optimization API থেকে একটি রুট টোকেন ব্যবহার করে আপনি আপনার পরিকল্পিত রুটের জন্য দুটি জিনিস নির্দিষ্ট করতে পারেন:

  • রুটের জন্য একটি পলিলাইন

  • আপনার পথের উদ্দেশ্যগুলি

উদাহরণস্বরূপ, আপনার রাউটিং উদ্দেশ্যগুলোর কিছু উদাহরণ নিচে দেওয়া হলো:

  • ডেলিভারির সময় কমানো : খাবার ডেলিভারি করে এমন কোনো ব্যবসা প্রতিষ্ঠান খাবার পৌঁছে দেওয়ার সময় কমাতে চাইতে পারে।

  • ভ্রমণের সময় বা জ্বালানি খরচ কমানো : একটি লজিস্টিকস ব্যবসা তাদের চালকদের কর্মদক্ষতা বাড়াতে এবং জ্বালানি খরচ কমাতে চাইতে পারে।

  • গন্তব্যে পৌঁছানোর সময় কমানো : একটি পরিষেবা প্রেরণ কার্যক্রম কোনো কাজের অনুরোধে অপারেটরদের পৌঁছানোর সময় কমাতে চাইতে পারে।

  • খরচ কমানো এবং নিরাপত্তা বৃদ্ধি করা : একটি রাইড-শেয়ারিং ব্যবসা এমন একটি রুট খুঁজে বের করতে চাইতে পারে, যা যাত্রীদের জন্য কম ব্যয়বহুল এবং নিরাপত্তার কারণে নির্দিষ্ট কিছু এলাকা এড়িয়ে চলে।

রুট টোকেন ব্যবহার করে রুট পরিকল্পনা করার বিষয়ে আরও তথ্যের জন্য, Routes API-তে Request a route token এবং Route Optimization API-তে Transition Polylines and Route Tokens দেখুন।

রুটের উদ্দেশ্য পূরণের জন্য কেন রুট টোকেন ব্যবহার করবেন

Routes API, Routes Preferred API, বা Route Optimization API থেকে প্রাপ্ত একটি রুট টোকেনের মাধ্যমে, প্রদত্ত রুটের উপর আপনার আরও বেশি নিয়ন্ত্রণ থাকে:

  • সম্ভব হলে নেভিগেশন এসডিকে ব্যবহারের জন্য আগে থেকেই একটি রুট পরিকল্পনা করুন

  • নেভিগেশন এসডিকে ব্যবহারের জন্য সেরা রুটটি বেছে নিন । আপনি যদি রাউটস এপিআই-তে রুট তৈরি করার সময় রুট টোকেনের জন্য অনুরোধ করেন, তাহলে তৈরি করা প্রতিটি রুটের জন্য একটি করে রুট টোকেন পাবেন। এরপর, নেভিগেশন এসডিকে-তে পাঠানোর সময় আপনি যে রুটটি ব্যবহার করতে চান, তার জন্য টোকেনটি বেছে নিতে পারেন।

  • পৌঁছানোর আনুমানিক সময় (ETA) এবং দূরত্বের হিসাব সহ মূল্যটি আগে থেকেই অনুমান করুন । যদিও প্রকৃত খরচ এবং সময় ভিন্ন হতে পারে, এই অনুমানটি প্রত্যাশিত এবং প্রকৃত ভ্রমণ খরচের মধ্যে ব্যবধান কমিয়ে আনে।

  • আরও উন্নত রুট উদ্দেশ্য নির্দিষ্ট করুন , যেমন পরিবেশবান্ধব রুট বা সংক্ষিপ্ততম রুট।

রুট টোকেনগুলি কীভাবে কাজ করে

আপনি রুটের উদ্দেশ্যগুলো ব্যবহার করে একটি রুট পরিকল্পনা করতে রুটস এপিআই (Routes API), রুটস প্রিফার্ড এপিআই (Routes Preferred API), বা রুট অপটিমাইজেশন এপিআই (Route Optimization API) ব্যবহার করতে পারেন। আপনার যানবাহনের রুট নির্ধারণে নির্দেশনা দেওয়ার জন্য, আপনি এই এপিআইগুলোর যেকোনোটি থেকে প্রাপ্ত একটি রুট টোকেন নেভিগেশন এসডিকে-তে (Navigation SDK) পাঠাতে পারেন।

আপনি যখন একটি রাউট টোকেনের জন্য অনুরোধ করেন এবং তা ব্যবহার করেন, তখন যা ঘটে তা হলো:

  1. Routes API, Routes Preferred API, বা Route Optimization API একটি এনক্রিপ্টেড রুট টোকেন ফেরত দেয়, যার মধ্যে রুট পলিলাইন এবং রুটের উদ্দেশ্যগুলো অন্তর্ভুক্ত থাকে।

  2. আপনি নেভিগেশন এসডিকে-তে রাউট টোকেনটি প্রেরণ করেন।

  3. নেভিগেশন এসডিকে রুটটি খুঁজে বের করে, অথবা পরিবর্তিত পরিস্থিতির কারণে রুটটি পাওয়া না গেলে, এটি সবচেয়ে উপযুক্ত রুটটি খুঁজে বের করে।

  4. পথ ধরে গাড়ি চালানোর সময়, যদি ট্র্যাফিক বা রাস্তার অন্যান্য অবস্থার পরিবর্তন হয়, অথবা যদি কোনো যানবাহন পরিকল্পিত পথ থেকে বিচ্যুত হয়, তবে পরিবর্তিত পথগুলো টোকেনে থাকা পথের উদ্দেশ্যগুলোর উপর ভিত্তি করে সেরা পথের সাথে মেলানোর জন্য ক্রমাগত চেষ্টা করে।

এই প্রক্রিয়াটি প্রকৃত পথকে আপনার পরিকল্পিত পথের সর্বাধিক কাছাকাছি নিয়ে আসে।

কেন একটি পরিকল্পিত পথ হুবহু অনুসরণ করা সম্ভব নাও হতে পারে

আপনার পরিকল্পিত পথ এবং পথের উদ্দেশ্যগুলোকে অনুসরণের জন্য নির্দেশিকা হিসেবে ভাবুন; এগুলো বাধ্যতামূলক নয়। রাস্তার অবস্থা, শুরুর স্থান বা আপনার পরিকল্পিত পথটি তৈরি করার পর থেকে পরিবর্তিত হওয়া অন্যান্য প্যারামিটারের ভিন্নতার কারণে, আপনার পরিকল্পিত পথ এবং গাইডেড নেভিগেশন দ্বারা প্রদত্ত পথের মধ্যে পার্থক্য দেখা যেতে পারে। এই পার্থক্যের ফলে দূরত্ব এবং পৌঁছানোর আনুমানিক সময়ের (ETA) মতো ভ্রমণের অন্যান্য গুরুত্বপূর্ণ বিষয়গুলোর ক্ষেত্রে আপনার পরিকল্পিত এবং প্রকৃত লক্ষ্যের মধ্যে অমিল দেখা দিতে পারে।

একটি রুট টোকেন ব্যবহার করে একটি রুট পরিকল্পনা করুন

নিম্নলিখিত ধাপগুলিতে বর্ণিত পদ্ধতি অনুসরণ করে, আপনি একটি রুট টোকেন তৈরি করে এবং তারপর সেটি নেভিগেশন SDK-তে পাঠিয়ে একটি রুটের পরিকল্পনা করতে পারেন:

ধাপ ১: Routes API, Routes Preferred API, অথবা Route Optimization API ব্যবহার করে একটি রাউট টোকেন তৈরি করুন।

  1. নিম্নলিখিত পদ্ধতিগুলোর যেকোনো একটি ব্যবহার করে একটি রাউট টোকেনের জন্য অনুরোধ করুন :

    • রাউটস এপিআই : computeRoutes । রাউটস এপিআই-তে রাউট টোকেন অনুরোধ করার বিষয়ে আরও তথ্যের জন্য, Compute a route এবং Request a route token দেখুন।

    • রাউটস প্রিফার্ড এপিআই : computeCustomRoutes । রাউটস প্রিফার্ড এপিআই-তে রাউট টোকেন অনুরোধ করার বিষয়ে আরও তথ্যের জন্য, প্ল্যান এ রাউট দেখুন।

    • রুট অপটিমাইজেশন এপিআই : optimizeTours অথবা batchOptimizeTours । রুট অপটিমাইজেশন এপিআই-তে রুট টোকেন অনুরোধ করার বিষয়ে আরও তথ্যের জন্য, ট্রানজিশন পলিলাইন এবং রুট টোকেন দেখুন।

  2. রাউট টোকেন ব্যবহারের শর্তগুলো পূরণ করার জন্য আপনার রাউটস এপিআই (Routes API) অথবা রাউটস প্রিফার্ড এপিআই (Routes Preferred API) অনুরোধটি সেট আপ করুন :

    • travel_mode DRIVE অথবা TWO_WHEELER এ সেট করুন।
    • routing_preference TRAFFIC_AWARE অথবা TRAFFIC_AWARE_OPTIMAL এ সেট করুন।
    • Via ওয়েপয়েন্ট ব্যবহার করবেন না।

ধাপ ২: নেভিগেশন SDK-তে রাউট টোকেনটি পাঠান।

  1. রাউট টোকেন সংরক্ষণ করুন : নেভিগেশন SDK-তে, রাউট টোকেন সংরক্ষণ করার জন্য একটি স্ট্রিং সেট আপ করুন। উদাহরণস্বরূপ:

    let routeToken = "route token returned by Routes API"
    

    ফেরত আসা রাউট টোকেনের উদাহরণ:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. mapView.navigator setDestinations মেথড ব্যবহার করে নেভিগেশন SDK-তে রুট টোকেনটি পাঠান এবং রুট টোকেন তৈরি করার সময় ব্যবহৃত একই ডেস্টিনেশন ওয়েপয়েন্টগুলো উল্লেখ করুন:

    mapView.navigator?.continueToNextDestination([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
    

    Navigator.continueToNextDestination মেথডটি অনুরোধের অবস্থা ফেরত দেয়। যদি ব্যবহারকারীর অবস্থান থেকে প্রদত্ত গন্তব্যে যাওয়ার কোনো পথ খুঁজে পাওয়া যায়, তবে এটি RouteStatus.OK ফেরত দেয়।

একাধিক স্টপ সিনারিও

আপনি সর্বোচ্চ ২৫টি ওয়েপয়েন্ট কনফিগার করতে পারবেন।

setDestinations মেথডটি একাধিক স্টপ সহ যাত্রা সমর্থন করে না। যাত্রার পরবর্তী ধাপে ওয়েপয়েন্টকে এগিয়ে নিতে continueToNextDestination() ব্যবহার করুন।

উদাহরণ

নিম্নলিখিত কোড উদাহরণগুলি দেখায় কিভাবে একটি পরিকল্পিত রুট পুনরুদ্ধার করতে হয়।

সুইফট

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: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 continueToNextDestination:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

রুট টোকেন এবং নেভিগেশন SDK কীভাবে একে অপরের সাথে কাজ করে

নেভিগেশন SDK দ্বারা তৈরি রুট এবং রুট টোকেনে থাকা পরিকল্পিত রুট কীভাবে একে অপরের সাথে কাজ করে, তা নিচে দেওয়া হলো:

  • পূর্বে সেট করা যেকোনো গন্তব্যকে বাতিল করে দেয়

  • যানবাহনটির প্রারম্ভিক অবস্থান ব্যবহার করে

  • রাস্তা ও যানজটের অবস্থা অনুযায়ী সমন্বয় করা হয় । দেখুন, কেন একটি পরিকল্পিত পথ হুবহু অনুসরণ করা নাও হতে পারে

  • নিম্নলিখিত রাউটিং-সম্পর্কিত বিকল্পগুলিকে অপ্রয়োজনীয় হিসেবে উপেক্ষা করে :

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • অনুসরণ করে :

    • ওয়েপয়েন্ট-সম্পর্কিত বিকল্পসমূহ , যেমন রাস্তার পাশের পছন্দ।

    • রুটের উদ্দেশ্যসমূহ । নেভিগেশন SDK-কে যদি ফেরত আসা রুটটি সমন্বয় করতে হয়, তবে এটি রুট টোকেনের অনুরোধ করার সময় আপনার নির্দিষ্ট করা রুটের উদ্দেশ্যগুলো ব্যবহার করে। এই কারণে, রাউটস এপিআই-তে আপনার নির্দিষ্ট করা ওয়েপয়েন্ট-সম্পর্কিত অপশনগুলোই ব্যবহার করা উচিত।