বড় গাড়ির রুট নেভিগেট করুন

এই নির্দেশিকা কাদের জন্য: আপনি যদি একজন মোবাইল ডেভেলপার হন এবং ট্রাক, বাস বা অন্যান্য বড় বাণিজ্যিক গাড়ির চালকদের জন্য ধাপে ধাপে নেভিগেশনের অভিজ্ঞতা তৈরি করার দায়িত্বে থাকেন, তাহলে এই নির্দেশিকাটি পড়ুন।

এই গাইডে কী কী কভার করা হয়েছে: এই গাইডে ব্যাখ্যা করা হয়েছে যে কীভাবে Routes API বা Route Optimization API-এর মাধ্যমে জেনারেট করা ট্রাক-নির্দিষ্ট রুট নিয়ে iOS-এর জন্য Navigation SDK-এর সাহায্যে ধাপে ধাপে নেভিগেশন সেশন চালানো যায়।

আপনি কী শিখবেন

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

  • ইন-অ্যাপ নেভিগেশন অভিজ্ঞতার সাথে ব্যাকএন্ড রুট প্ল্যানিং কানেক্ট করতে routeToken ব্যবহার করুন।
  • আগে থেকে প্ল্যান করা ট্রাক রুট ব্যবহার করতে Navigation SDK কনফিগার করুন।
  • ট্রাক-নির্দিষ্ট বিধিনিষেধ কীভাবে নেভিগেশন UI-তে ড্রাইভারের কাছে দেখানো হয় তা বুঝুন।

পূর্বশর্ত

শুরু করার আগে, আপনি নিম্নলিখিত প্রয়োজনীয়তা পূরণ করেছেন কিনা তা নিশ্চিত করুন:

১. আপনার প্রোজেক্টের জন্য অ্যাক্সেসের অনুরোধ করুন

সীমিত সংখ্যক গ্রাহকের জন্য বড় গাড়ির রুট উপলভ্য। আপনার Google Cloud প্রোজেক্টের জন্য আগ্রহ প্রকাশ করতে এবং অ্যাক্সেসের অনুরোধ করতে, যোগাযোগ ফর্ম পূরণ করুন। পরবর্তী ধাপের বিষয়ে Google প্রতিনিধি আপনার সাথে যোগাযোগ করবেন।

Google অ্যাক্সেস প্রদান করলে, আপনার Google Cloud প্রোজেক্ট বড় গাড়ির রুটিংয়ের জন্য প্রভিশন করা হয়েছে কিনা তা নিশ্চিত করুন।

আপনার সংস্থা ব্যাকএন্ড রাউটিং API এবং মোবাইল Navigation SDK-এর জন্য আলাদা Google Cloud প্রোজেক্ট ব্যবহার করলে, প্রতিটি প্রোজেক্টের প্রভিশন করার জন্য Google-এর সাথে যোগাযোগ করুন।

২. ব্যাকএন্ড রুট জেনারেশন সেট-আপ করুন এবং একটি রুট টোকেন পান

ডিভাইসে নেভিগেশন শুরু করার আগে, আপনার ব্যাকএন্ড সার্ভারকে অবশ্যই একটি ট্রাক রুট তৈরি করতে হবে এবং নিম্নলিখিত APIগুলির মধ্যে একটি ব্যবহার করে একটি routeToken পেতে হবে:

আপনার ব্যাকএন্ড অনুরোধে অবশ্যই travelMode: TRUCK-এর সাথে গাড়ির শারীরিক বৈশিষ্ট্য (উচ্চতা, প্রস্থ, দৈর্ঘ্য, ওজন, এক্সেল সংখ্যা এবং বিপজ্জনক কার্গো) উল্লেখ করতে হবে। রাউটিং API তার উত্তরে একটি routeToken পাঠায়, যা আপনার ব্যাকএন্ড সার্ভার আপনার মোবাইল অ্যাপে পাস করে।

৩. ন্যূনতম SDK ও সিস্টেমের প্রয়োজনীয়তা পূরণ করুন

আপনার অ্যাপে অবশ্যই নেভিগেশন SDK-এর ন্যূনতম প্রয়োজনীয় ভার্সন 5.4.0 বা তার পরের ভার্সন ব্যবহার করতে হবে।

এছাড়াও, আপনার প্রোজেক্টকে অবশ্যই স্ট্যান্ডার্ড Navigation SDK সেট-আপের প্রয়োজনীয়তা পূরণ করতে হবে।

সীমাবদ্ধতা ও অপারেশনাল নির্দেশিকা

শুরু করার আগে, নিম্নলিখিত সীমাবদ্ধতা এবং অপারেশনাল নির্দেশিকাগুলি নোট করুন:

  • ভৌগোলিক উপলভ্যতা: বড় গাড়ির জন্য রুট দেখানোর সুবিধা মার্কিন যুক্তরাষ্ট্রের ৪৮টি সংলগ্ন রাজ্য (সাধারণত উপলভ্য) এবং জাপানে (পরীক্ষামূলক) উপলভ্য। এটি আলাস্কা, হাওয়াই বা মার্কিন যুক্তরাষ্ট্রের অঞ্চলগুলিতে উপলভ্য নয়।
  • ড্রাইভারদের জন্য পরামর্শ ও নিরাপত্তা: নিরাপদ বা আইনিভাবে গাড়ি চালানোর জন্য ড্রাইভারদের শুধুমাত্র Navigation SDK-এর দেখানো রুটের উপর নির্ভর করলে চলবে না। সব ধরনের রাস্তার পরিস্থিতিতে রুটগুলি গাড়ির জন্য উপযুক্ত নাও হতে পারে এবং সেগুলি অনুসরণ করলে ড্রাইভাররা কম ক্লিয়ারেন্স বা ওজন-সীমাবদ্ধ রাস্তার মতো বিপদের সম্মুখীন হতে পারেন। ড্রাইভারদের সবসময় সতর্ক থাকতে হবে এবং রাস্তার চিহ্ন ও স্থানীয় নিয়ম মেনে চলতে হবে।
  • বেস্ট-এফর্ট রুট: যখন রাউটিং API এমন কোনও রুট খুঁজে পায় না যা সম্পূর্ণরূপে গাড়ির বিধিনিষেধ মেনে চলে, তখন এটি একটি "বেস্ট-এফর্ট" রুট দেখায় যা এখনও বিধিনিষেধযুক্ত অংশ অতিক্রম করতে পারে। যেমন, Routes API তার রেসপন্সে routeRestrictionsPartiallyIgnored ফ্ল্যাগ সেট করে। এইসব রুটে নেভিগেট করার সময়, প্রাসঙ্গিক বিধিনিষেধ হাইলাইট করতে, Navigation SDK রুট কলআউট দেখায়। এইসব ক্ষেত্রে সাবধানে রুট প্ল্যান করুন এবং প্ল্যানিং বা নেভিগেশনের জন্য একমাত্র সোর্স হিসেবে ফ্ল্যাগ করা রুট ব্যবহার করবেন না।
  • কাজ করে না এমন ফিচার: বড় গাড়ির জন্য রুট দেখানোর সময় নিম্নলিখিত ফিচার কাজ করে না:
    • ট্রাকের টোল সংক্রান্ত দাম
    • ট্রাক বা ভারী গাড়ির জন্য নির্দিষ্ট স্পিড লিমিট
    • তেজস্ক্রিয় বিপজ্জনক মেটেরিয়ালের জন্য রাউটিং
  • ব্যবহারের সীমা: Navigation SDK-তে করা অনুরোধ স্ট্যান্ডার্ড ব্যবহার ও কোটার সীমা অনুসরণ করে। আরও তথ্যের জন্য, ব্যবহার ও বিলিং দেখুন।

ট্রাক-নির্দিষ্ট UI (রুট কলআউট) দেখান

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

Navigation SDK-তে নিম্নলিখিত বিধিনিষেধের জন্য কলআউট অন্তর্ভুক্ত থাকে:

বিধিনিষেধ কলআউট আইকন ও টেক্সট দেখানোর শর্তাবলী
উচ্চতা উচ্চতা সংক্রান্ত বিধিনিষেধের হলুদ আইকন
হলুদ = সতর্কতা, আপনার গাড়ি অনুমোদিত সর্বোচ্চ উচ্চতার কাছাকাছি
উচ্চতা সংক্রান্ত বিধিনিষেধের লাল আইকন
লাল = আপনার গাড়ি অনুমোদিত সর্বোচ্চ উচ্চতার চেয়ে বেশি
গাড়ির উচ্চতা বিধিনিষেধের কাছাকাছি হলে একটি হলুদ কলআউট দেখা যায়।
উচ্চতা সংক্রান্ত বিধিনিষেধের সতর্কতা দেখানো ম্যাপ
রুটটি নিয়ম মেনে না চললে এবং উচ্চতা সংক্রান্ত বিধিনিষেধ লঙ্ঘন করলে একটি লাল কলআউট দেখানো হয়।
উচ্চতা সংক্রান্ত বিধিনিষেধ লঙ্ঘন দেখানো ম্যাপ
ওয়েট ওজন সংক্রান্ত বিধিনিষেধের আইকন গাড়ির ওজন রাস্তার সীমা অতিক্রম করলে একটি লাল কলআউট দেখা যায়।
ওজন সংক্রান্ত বিধিনিষেধের আইকন দেখানো ম্যাপ
ট্রাক নিষিদ্ধ ট্রাক নিষিদ্ধ আইকন কোনও বাণিজ্যিক ট্রাকের জন্য বিধিনিষেধ আছে এমন রাস্তার সেগমেন্টে যাতায়াত করার সময় একটি লাল কলআউট দেখানো হয়।
ম্যাপে ট্রাক নিষিদ্ধ আইকন দেখানো হচ্ছে
বিপজ্জনক পণ্য বিপজ্জনক পণ্যের আইকন কোনও রাস্তার সেগমেন্টে বিপজ্জনক পদার্থ বহনকারী গাড়ির চলাচল নিষিদ্ধ হলে, একটি লাল কলআউট দেখানো হয়।
একটি ম্যাপে বিপজ্জনক পণ্যের আইকন দেখানো হচ্ছে

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

routeToken হল Google-এর রাউটিং ব্যাকএন্ডের মাধ্যমে তৈরি করা রুটের এনক্রিপ্ট করা স্ন্যাপশট। এটি পরিকল্পিত রুটের জ্যামিতি এবং গাড়ির শারীরিক মাত্রা এবং বিধিনিষেধ প্রোফাইলকে এনক্যাপসুলেট করে।

ওয়ার্কফ্লোতে এইসব ধাপ অনুসরণ করা হয়:

  1. রুটের জন্য অনুরোধ করা: আপনার ব্যাকএন্ড সার্ভার Routes API (বা Route Optimization API) থেকে ট্রাকের রুটের জন্য অনুরোধ করে।
  2. টোকেন পাওয়া: রাউটিং API নিয়ম মেনে চলা রুট গণনা করে এবং আপনার ব্যাকএন্ড সার্ভারে একটি routeToken পাঠায়।
  3. টোকেন ফরওয়ার্ড করা: আপনার ব্যাকএন্ড সার্ভার routeToken এবং গন্তব্যের স্থানাঙ্ক আপনার মোবাইল অ্যাপে পাস করে।
  4. SDK-তে পাস করা: মোবাইল অ্যাপ routeToken-কে Navigation SDK-তে পাস করে।
  5. নির্দেশনা শুরু করুন: Navigation SDK, এক এক করে অভিজ্ঞতার সব দিক ম্যানেজ করে, যার মধ্যে রয়েছে রুট কল-আউট রেন্ডার করা এবং গাড়ির বিধিনিষেধ অনুযায়ী ডায়নামিক রি-রুটিং ম্যানেজ করা।

ডায়নামিক রিক্যালকুলেশন ও রিরুটিং

নেভিগেশন চালু থাকাকালীন, ট্রাফিক পরিস্থিতি, রাস্তা বন্ধ থাকা বা কোনও বাঁক মিস করার কারণে গাড়িটি পরিকল্পিত রুট থেকে সরে যেতে পারে।

রুট পরিবর্তন করা হলে:

  • Navigation SDK অটোমেটিক গন্তব্যে পৌঁছানোর রুট আবার গণনা করে।
  • SDK, আসল routeToken-এ এনকোড করা গাড়ির অ্যাট্রিবিউট ও ডাইমেনশন রেখে দেয়।
  • নতুন করে হিসেব করা রুটে কম উচ্চতার টানেল, ওজন-সীমিত ব্রিজ এবং বাণিজ্যিক ট্রাকের জন্য নিষিদ্ধ রাস্তা এড়ানো হয়।

প্রয়োগ: ট্রাক-নির্দিষ্ট ট্রিপ শুরু করুন

বড় গাড়ির রুট টোকেন সহ ধাপে ধাপে নেভিগেশন শুরু করতে এবং চালু করতে এইসব ধাপ অনুসরণ করুন।

ধাপ ১: আপনার ব্যাকএন্ড থেকে রুট টোকেন পান

আপনার মোবাইল অ্যাপ ব্যাকএন্ড সার্ভার থেকে গন্তব্যের স্থানাঙ্কের সাথে routeToken স্ট্রিং পায়। আপনার সার্ভারে এই টোকেন জেনারেট করার ব্যাপারে বিস্তারিত জানতে, Routes API ডকুমেন্টেশনে বড় গাড়ির রুট ও ETA জেনারেট করুন দেখুন।

নিম্নলিখিত কোডটি হল একটি উদাহরণ রুট টোকেন:

{
  "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g"
}

ধাপ ২: নেভিগেটরকে টোকেন পাস করা

routeToken এবং গন্তব্যের ওয়েপয়েন্ট mapView.navigator setDestinations পদ্ধতিতে পাস করুন।

ওয়েপয়েন্ট কনফিগার করা এবং রুট টোকেন পাস করার সময়, নিম্নলিখিত বিষয়গুলি মনে রাখবেন:

  • গন্তব্য ম্যাচ করার প্রয়োজনীয়তা: setDestinations-এ পাস করা গন্তব্যের কোঅর্ডিনেট, routeToken তৈরি করার সময় ব্যবহার করা গন্তব্যের কোঅর্ডিনেটের সাথে ম্যাচ করতে হবে। অন্য কোনও গন্তব্য উল্লেখ করলে সমস্যা হয়।
  • রাস্তার পাশে রাউটিং: বড় বাণিজ্যিক গাড়ি সরু রাস্তায় সহজে ইউ-টার্ন নিতে পারে না। ট্রাক যাতে রাস্তার সঠিক দিক দিয়ে গন্তব্যে পৌঁছায় তা নিশ্চিত করতে, আপনার ওয়েপয়েন্টে preferSameSideOfRoad = true সেট করুন।
  • গাড়ি থামানোর জায়গা: ট্রাক থামানো বা আনলোড করার জন্য উপযুক্ত লোকেশনে নিয়ে যেতে, আপনার ওয়েপয়েন্টে vehicleStopover = true সেট করুন।
  • নেভিগেশন পয়েন্ট: আপনার গন্তব্যে যদি কোনও নির্দিষ্ট মালবাহী প্রবেশপথ বা লোডিং ডক থাকে, তাহলে নেভিগেশন পয়েন্ট টোকেন ব্যবহার করে তা উল্লেখ করুন।

ধাপ ৩: রুটের স্ট্যাটাস ম্যানেজ করা ও গাইডেন্স শুরু করা

setDestinations কলব্যাকে ফেরত আসা GMSRouteStatus মূল্যায়ন করুন। স্ট্যাটাস .OK (GMSRouteStatusOK) হলে, অ্যাক্টিভ এক এক করে নির্দেশিকা শুরু করতে isGuidanceActive = true (guidanceActive = YES) সেট করুন।

কোডের উদাহরণ

mapView.navigator setDestinations পদ্ধতি ব্যবহার করে রুট টোকেনটি Navigation SDK-তে পাস করুন, রুট টোকেন তৈরি করার সময় আপনি যে গন্তব্যের ওয়েপয়েন্ট ব্যবহার করেছিলেন, সেটিই উল্লেখ করুন:

// Obtain the routeToken string from your backend
let routeToken = "route token returned by Routes API"

mapView.navigator?.setDestinations([destination], routeToken: routeToken, callback: {...})

গাড়ির ডিসপ্লে

CarPlay-এর জন্য নেভিগেশন ব্যবহার করে আপনি ইন-ড্যাশ স্ক্রিনে বড় গাড়ির নেভিগেশন সেশন দেখতে পারবেন।

পরবর্তী ধাপ

  • নেভিগেশন UI পরিবর্তন করা: বিল্ট-ইন UI কন্ট্রোল এবং কম্পাস, রিসেন্টার বোতাম ও ক্যামেরা পার্সপেক্টিভের মতো ভিজ্যুয়াল এলিমেন্ট কাস্টমাইজ করা।
  • নেভিগেশন ইভেন্ট শুনুন: নেভিগেশন আপডেট এবং লাইফসাইকেল ইভেন্ট ম্যানেজ করুন, যেমন রুটের প্রোগ্রেস, ETA পরিবর্তন এবং রিরুট।