রুট প্ল্যান করো

কখনও কখনও, আপনার অ্যাপ ব্যবহারকারীদের যে রুট প্রদান করে তা আপনি প্ল্যান করতে চাইতে পারেন। 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-তে পাস করতে পারেন।

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

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

  2. আপনি Navigation SDK-তে রুট টোকেন পাস করেন।

  3. Navigation SDK আপনার প্ল্যান করা রুটে নেভিগেশন শুরু করে, এমনকি আরও দ্রুত রুট উপলভ্য থাকলেও।

  4. ট্রিপ চলাকালীন, ট্রাফিক বা রাস্তার অবস্থা পরিবর্তন হলে অথবা গাড়িটি পরিকল্পিত রুট থেকে সরে গেলে, Navigation SDK একটি নতুন রুট গণনা করে যা আপনার রুট টোকেনে সেট করা রুটের উদ্দেশ্য এবং রাউটিং বিকল্পগুলি অনুসরণ করে।

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

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

আপনার প্ল্যান করা রুটে নেভিগেশন শুরু হয়, তবে নিম্নলিখিত পরিস্থিতিতে আসল রুট আলাদা হতে পারে:

  • গাড়িটি পরিকল্পিত শুরুর পয়েন্ট থেকে দূরে শুরু হয়।
  • ট্রিপ চলাকালীন ট্রাফিক বা রাস্তার অবস্থা পরিবর্তন হয়।
  • গাড়িটি প্ল্যান করা রুট থেকে সরে যায়।

এইসব পার্থক্যের কারণে দূরত্ব, ETA এবং আপনার প্ল্যান করা ট্রিপের অন্যান্য গুরুত্বপূর্ণ বিষয়ে প্রভাব পড়তে পারে।

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

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

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

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

  2. রুট টোকেন ব্যবহার করার প্রয়োজনীয়তা পূরণ করতে আপনার Routes API বা Routes Preferred API অনুরোধ সেট-আপ করুন:

    • travelMode-কে DRIVE বা TWO_WHEELER-এ সেট করুন।
    • routingPreference-কে TRAFFIC_AWARE বা TRAFFIC_AWARE_OPTIMAL-এ সেট করুন।
    • Viaটি ওয়েপয়েন্ট ব্যবহার করবেন না।

ধাপ ২: নেভিগেশন SDK-তে রুট টোকেন পাস করা

  1. রুট টোকেন স্টোর করা: Navigation SDK-তে, রুট টোকেন স্টোর করার জন্য একটি স্ট্রিং সেট-আপ করুন। যেমন:

    String routeToken = "route token returned by Routes API";

    ফেরত পাঠানো রুট টোকেনের উদাহরণ:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. 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);

রুট টোকেন ও Navigation SDK কীভাবে ইন্টার‌্যাক্ট করে

নেভিগেশন SDK কীভাবে আপনার প্ল্যান করা রুট ম্যানেজ করে তা এখানে দেওয়া হল:

  • আপনার অ্যাপে নিম্নলিখিত সেটিংসের পরিবর্তে আপনার রুট টোকেনে সেট করা রাউটিং বিকল্প ব্যবহার করে, যার মধ্যে ট্রিপ চলাকালীন নতুন রুট গণনা করার সময়ও অন্তর্ভুক্ত:

    • RoutingOptions.avoidHighways()
    • RoutingOptions.avoidTolls()
    • RoutingOptions.avoidFerries()
    • Navigator.setLicensePlateRestrictionInfo()
    • আপনার অ্যাপে সেট করা ভ্রমণ মোড
  • রুট গণনা বা অ্যাডজাস্ট করার সময় এইসব সেটিংস অনুসরণ করে:

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

    • আপনার অ্যাপ থেকে ওয়েপয়েন্ট-সম্পর্কিত বিকল্প, যেমন রাস্তার-পাশে পছন্দ। রুট টোকেনের অনুরোধ করার সময় আপনি যে ওয়েপয়েন্ট-সম্পর্কিত বিকল্প উল্লেখ করেছিলেন, সেটিই ব্যবহার করুন।