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

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

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

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

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

  • খাবার সরবরাহের সময় কমিয়ে আনা : খাবার সরবরাহকারী একটি ব্যবসা হয়তো খাবার সরবরাহের সময় কমিয়ে আনতে চাইতে পারে।

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

  • গন্তব্যে পৌঁছানোর সময় কমিয়ে আনা : একটি সার্ভিস ডিসপ্যাচ অপারেশন অপারেটরদের চাকরির অনুরোধে পৌঁছাতে যে সময় লাগে তা কমিয়ে আনতে চাইতে পারে।

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

রুট টোকেন ব্যবহার করে রুট পরিকল্পনা সম্পর্কে আরও তথ্যের জন্য, রুটস API-তে রুট টোকেনের অনুরোধ এবং রুট অপ্টিমাইজেশন API-তে ট্রানজিশন পলিলাইন এবং রুট টোকেন দেখুন।

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

রুটস এপিআই, রুটস প্রেফার্ড এপিআই, অথবা রুট অপ্টিমাইজেশন এপিআই থেকে একটি রুট টোকেন ব্যবহার করলে, প্রদত্ত রুটের উপর আপনার আরও নিয়ন্ত্রণ থাকবে:

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

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

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

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

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

রুট উদ্দেশ্য ব্যবহার করে রুট পরিকল্পনা করতে আপনি রুট API, রুট পছন্দের API, অথবা রুট অপ্টিমাইজেশন API ব্যবহার করতে পারেন। আপনি এই API গুলির যেকোনো একটি থেকে ফেরত আসা একটি রুট টোকেন নেভিগেশন SDK-তে পাঠাতে পারেন যাতে এটি আপনার গাড়িকে কীভাবে রুট করে তা নির্দেশ করতে পারে।

রুট টোকেনের অনুরোধ এবং ব্যবহার করলে কী ঘটে তা এখানে দেওয়া হল:

  1. রুটস এপিআই, রুটস প্রেফার্ড এপিআই, অথবা রুট অপ্টিমাইজেশন এপিআই একটি এনক্রিপ্টেড রুট টোকেন প্রদান করে যার মধ্যে রুট পলিলাইন এবং রুট উদ্দেশ্য অন্তর্ভুক্ত থাকে।

  2. আপনি রুট টোকেনটি নেভিগেশন SDK-তে পাঠান।

  3. নেভিগেশন SDK রুটটি পুনরুদ্ধার করে, অথবা পরিবর্তিত অবস্থার কারণে যদি রুটটি উপলব্ধ না হয়, তবে এটি সেরা মিলিত রুটটি পুনরুদ্ধার করে।

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

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

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

আপনার পরিকল্পিত রুট এবং রুটের উদ্দেশ্যগুলিকে অনুসরণ করার জন্য নির্দেশিকা হিসেবে ভাবুন: এগুলি নির্দেশমূলক নয়। রাস্তার অবস্থা, শুরুর অবস্থান, অথবা পরিকল্পিত রুট তৈরির পর থেকে পরিবর্তিত অন্যান্য পরামিতিগুলির পার্থক্যের কারণে আপনি আপনার পরিকল্পিত রুট এবং নির্দেশিত নেভিগেশন দ্বারা প্রদত্ত রুটের মধ্যে পার্থক্য দেখতে পেতে পারেন। এই পার্থক্যের ফলে দূরত্ব এবং ETA, অন্যান্য গুরুত্বপূর্ণ ভ্রমণের গুণাবলীর জন্য আপনার পরিকল্পিত এবং প্রকৃত লক্ষ্যগুলির মধ্যে অমিল হতে পারে।

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

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

ধাপ ১: রুটস এপিআই, রুটস প্রেফারড এপিআই, অথবা রুট অপ্টিমাইজেশন এপিআই ব্যবহার করে একটি রুট টোকেন তৈরি করুন।

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

  2. রুট টোকেন ব্যবহারের প্রয়োজনীয়তা পূরণ করতে আপনার রুটস এপিআই বা রুটস প্রেফার্ড এপিআই অনুরোধ সেট আপ করুন :

    • travel_mode DRIVING অথবা 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 পদ্ধতি ব্যবহার করে 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: {...})

অবজেক্টিভ-সি

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){...}];

রুট টোকেন এবং নেভিগেশন SDK কীভাবে ইন্টারঅ্যাক্ট করে

নেভিগেশন SDK দ্বারা তৈরি রুট এবং রুট টোকেনের পরিকল্পিত রুট কীভাবে ইন্টারঅ্যাক্ট করে তা এখানে দেখানো হল:

  • পূর্বে সেট করা যেকোনো গন্তব্যকে ওভাররাইড করে

  • গাড়ির স্টার্টিং লোকেশন ব্যবহার করে

  • রাস্তা এবং ট্র্যাফিকের অবস্থার জন্য সামঞ্জস্য করে । দেখুন কেন একটি পরিকল্পিত রুট সঠিকভাবে অনুসরণ করা নাও হতে পারে

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

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

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

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