নেভিগেশন UI পরিবর্তন করুন

Android-এর জন্য Navigation SDK ব্যবহার করে, আপনি ম্যাপে কোন কোন বিল্ট-ইন UI কন্ট্রোল এবং এলিমেন্ট দেখানো হবে তা নির্ধারণ করে আপনার ম্যাপের সাথে ব্যবহারকারীর অভিজ্ঞতা পরিবর্তন করতে পারেন। এছাড়াও, আপনি নেভিগেশন UI-এর ভিজ্যুয়াল অ্যাপিয়ারেন্স অ্যাডজাস্ট করতে পারবেন। নেভিগেশন UI-তে গ্রহণযোগ্য পরিবর্তন সংক্রান্ত নির্দেশিকা পেতে নীতি পৃষ্ঠা দেখুন।

এই ডকুমেন্ট থেকে জানা যায় যে কীভাবে আপনার ম্যাপের ইউজার ইন্টারফেস দুটি উপায়ে পরিবর্তন করতে হয়:

ম্যাপ UI কন্ট্রোল

নেভিগেশন ভিউতে কাস্টম UI এলিমেন্ট যোগ করতে, সঠিক পজিশনিংয়ের জন্য Map UI কন্ট্রোল ব্যবহার করুন। বিল্ট-ইন লেআউট পরিবর্তন হলে, Android-এর জন্য Navigation SDK আপনার কাস্টম কন্ট্রোল অটোমেটিক আবার পজিশন করে। আপনি প্রতিটি পজিশনের জন্য একবারে একটি কাস্টম কন্ট্রোল ভিউ সেট করতে পারবেন। আপনার ডিজাইনে একাধিক UI এলিমেন্ট প্রয়োজন হলে, আপনি সেগুলি ViewGroup-এ রাখতে এবং setCustomControl পদ্ধতিতে পাস করতে পারবেন।

setCustomControl পদ্ধতি CustomControlPosition enum-এ যেভাবে সংজ্ঞায়িত করা হয়েছে সেই অনুযায়ী পজিশন প্রদান করে:

  • SECONDARY_HEADER (শুধুমাত্র পোর্ট্রেট মোডে দেখা যায়)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW
  • FOOTER
পোর্ট্রেট ওরিয়েন্টেশনের জন্য কাস্টম কন্ট্রোল পজিশন।
পোর্ট্রেট ওরিয়েন্টেশনের জন্য কাস্টম কন্ট্রোল পজিশন
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য কাস্টম কন্ট্রোল পজিশন।
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য কাস্টম কন্ট্রোল পজিশন

কাস্টম কন্ট্রোল যোগ করুন

  1. কাস্টম UI এলিমেন্ট বা ViewGroup-এর সাহায্যে Android View তৈরি করুন।
  2. ভিউয়ের ইনস্ট্যান্স পেতে XML ইনফ্লেট করুন বা কাস্টম ভিউ ইনস্ট্যান্টিয়েট করুন।
  3. CustomControlPosition enum থেকে বেছে নেওয়া কাস্টম কন্ট্রোল পজিশনের সাথে NavigationView.setCustomControl বা NavigationFragment.setCustomControl ব্যবহার করুন।

    নিম্নলিখিত উদাহরণটি একটি ফ্র্যাগমেন্ট তৈরি করে এবং সেকেন্ডারি হেডার পজিশনে একটি কাস্টম কন্ট্রোল যোগ করে।

     mNavFragment.setCustomControl(getLayoutInflater().
       inflate(R.layout.your_custom_control, null),
       CustomControlPosition.SECONDARY_HEADER);
     ```
    

কাস্টম কন্ট্রোল সরিয়ে দেওয়া

কাস্টম কন্ট্রোল সরাতে, null ভিউ প্যারামিটার ও বেছে নেওয়া কাস্টম কন্ট্রোল পজিশন সহ setCustomControl মেথড কল করুন।

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

mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);

কাস্টম কন্ট্রোল পজিশন

সেকেন্ডারি হেডার

পোর্ট্রেট ওরিয়েন্টেশনের জন্য সেকেন্ডারি হেডার কাস্টম কন্ট্রোল পজিশন।
পোর্ট্রেট ওরিয়েন্টেশনের জন্য সেকেন্ডারি হেডার কাস্টম কন্ট্রোল পজিশন

এই কাস্টম কন্ট্রোল পজিশন ব্যবহার করতে, পজিশনটি CustomControlPosition.SECONDARY_HEADER থেকে setCustomControl-এ পাস করুন।

ডিফল্ট হিসেবে, নেভিগেশন মোডে স্ক্রিন লেআউট সেকেন্ডারি হেডারের জন্য একটি পজিশন প্রদান করে যা প্রাইমারি হেডারের নিচে থাকে। প্রয়োজন হলে এই সেকেন্ডারি হেডার দেখানো হয়, যেমন, লেন সংক্রান্ত নির্দেশনার সাথে। আপনার অ্যাপ কাস্টম কন্টেন্টের জন্য লেআউটের এই সেকেন্ডারি হেডার পজিশন ব্যবহার করতে পারে। আপনি এই ফিচার ব্যবহার করলে, আপনার কন্ট্রোল যেকোনও ডিফল্ট সেকেন্ডারি হেডার কন্টেন্ট কভার করে। আপনার নেভিগেশন ভিউতে ব্যাকগ্রাউন্ড থাকলে, সেই ব্যাকগ্রাউন্ডটি সেকেন্ডারি হেডার দ্বারা কভার করা অবস্থায় থাকে। আপনার অ্যাপ কাস্টম কন্ট্রোল সরিয়ে দিলে, সেটির জায়গায় যেকোনও ডিফল্ট সেকেন্ডারি হেডার দেখা যেতে পারে।

কাস্টম সেকেন্ডারি হেডারের অবস্থান প্রাইমারি হেডারের নিচের প্রান্তের সাথে এর উপরের প্রান্তকে সারিবদ্ধ করে। এই পজিশন শুধুমাত্র portrait mode-এ কাজ করে। landscape mode-এ, সেকেন্ডারি হেডার উপলভ্য নেই এবং লেআউট পরিবর্তন হয় না।

নিচের শুরু

পোর্ট্রেট ওরিয়েন্টেশনের জন্য কাস্টম কন্ট্রোল পজিশন নিচে শুরু করুন।
পোর্ট্রেট ওরিয়েন্টেশনের জন্য নিচে শুরু কাস্টম কন্ট্রোল পজিশন
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য নিচে শুরু করার কাস্টম কন্ট্রোল পজিশন।
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য নিচে শুরু কাস্টম কন্ট্রোল পজিশন

এই কাস্টম কন্ট্রোল পজিশন ব্যবহার করতে, পজিশনটি CustomControlPosition.BOTTOM_START_BELOW থেকে setCustomControl-এ পাস করুন।

এই কাস্টম কন্ট্রোল পজিশন ম্যাপের নিচের দিকের শুরুর কোণে থাকে। portrait mode এবং landscape mode, দুটিতেই এটি ETA কার্ড এবং/অথবা কাস্টম ফুটারের উপরে (অথবা দুটির কোনওটিই না থাকলে ম্যাপের নিচের দিকে) থাকে এবং Nav SDK এলিমেন্ট, যার মধ্যে রয়েছে রি-সেন্টার বোতাম এবং Google লোগো, কাস্টম কন্ট্রোল ভিউয়ের উচ্চতা অনুযায়ী উপরে উঠে যায়। এই কন্ট্রোলটি দৃশ্যমান ম্যাপ বাউন্ডের মধ্যে অবস্থিত, তাই ম্যাপের নিচে বা শুরুর প্রান্তে যোগ করা যেকোনও প্যাডিং এই কন্ট্রোলের অবস্থানও পরিবর্তন করবে।

নিচের প্রান্ত

পোর্ট্রেট ওরিয়েন্টেশনের জন্য নিচের দিকে কাস্টম কন্ট্রোল পজিশন।
পোর্ট্রেট ওরিয়েন্টেশনের জন্য নিচের দিকে কাস্টম কন্ট্রোল পজিশন
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য কাস্টম কন্ট্রোল পজিশনের নিচের প্রান্ত।
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য নিচের দিকে কাস্টম কন্ট্রোল পজিশন

এই কাস্টম কন্ট্রোল পজিশন ব্যবহার করতে, পজিশনটি CustomControlPosition.BOTTOM_END_BELOW থেকে setCustomControl-এ পাস করুন।

এই কাস্টম কন্ট্রোল পজিশন ম্যাপের নিচের দিকের কোণে থাকে। portrait mode-এ, এটি ETA কার্ড এবং/অথবা কাস্টম ফুটারের উপরে (অথবা দুটির কোনওটিই না থাকলে ম্যাপের নিচের দিকে) থাকে, কিন্তু landscape mode-এ এটি ম্যাপের নিচের দিকে থাকে। শেষের দিকে (LTR-এ ডানদিকে) দৃশ্যমান যেকোনও Nav SDK এলিমেন্ট কাস্টম কন্ট্রোল ভিউয়ের উচ্চতা অনুযায়ী উপরে উঠে যায়। এই কন্ট্রোলটি দৃশ্যমান ম্যাপ বাউন্ডের মধ্যে অবস্থান করে, তাই ম্যাপের নিচের বা শেষ প্রান্তে যোগ করা যেকোনও প্যাডিংও এই কন্ট্রোলের অবস্থান পরিবর্তন করবে।

পোর্ট্রেট ওরিয়েন্টেশনের জন্য ফুটার কাস্টম কন্ট্রোল পজিশন।
পোর্ট্রেট ওরিয়েন্টেশনের জন্য ফুটার কাস্টম কন্ট্রোল পজিশন
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য ফুটার কাস্টম কন্ট্রোল পজিশন।
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য ফুটার কাস্টম কন্ট্রোল পজিশন

এই কাস্টম কন্ট্রোল পজিশন ব্যবহার করতে, পজিশনটি CustomControlPosition.FOOTER থেকে setCustomControl-এ পাস করুন।

এই কাস্টম কন্ট্রোল পজিশনটি কাস্টম ফুটার ভিউয়ের জন্য ডিজাইন করা হয়েছে। Nav SDK ETA কার্ড দেখা গেলে, এই কন্ট্রোলটি তার উপরে থাকে। তা না হলে, কন্ট্রোলটি ম্যাপের নিচের দিকে অ্যালাইন করা থাকে। BOTTOM_START_BELOW এবং BOTTOM_END_BELOW কাস্টম কন্ট্রোলের মতো নয়, এই কন্ট্রোলটি দৃশ্যমান ম্যাপ বাউন্ডের বাইরে অবস্থান করে, যার অর্থ হল ম্যাপে যোগ করা যেকোনও প্যাডিং এই কন্ট্রোলের অবস্থান পরিবর্তন করবে না।

portrait mode-এ, কাস্টম ফুটার সম্পূর্ণ প্রস্থ জুড়ে থাকে। CustomControlPosition.BOTTOM_START_BELOW এবং CustomControlPosition.BOTTOM_END_BELOW পজিশনে কাস্টম কন্ট্রোল, এবং Nav SDK UI এলিমেন্ট যেমন রি-সেন্টার বোতাম এবং Google লোগো, কাস্টম কন্ট্রোল ফুটারের উপরে পজিশন করা হয়। শেভরনের ডিফল্ট পজিশন কাস্টম ফুটার উচ্চতা বিবেচনা করে।

landscape mode-এ, কাস্টম ফুটারটি অর্ধেক প্রস্থের এবং শুরু করার দিকে (LTR-এ বাঁদিকে) সারিবদ্ধ করা হয়েছে, ঠিক Nav SDK ETA কার্ডের মতো। CustomControlPosition.BOTTOM_START_BELOW পজিশনে কাস্টম কন্ট্রোল এবং Nav SDK UI এলিমেন্ট যেমন, আবার সেন্টারে নিয়ে আসার বোতাম এবং Google লোগো কাস্টম কন্ট্রোল ফুটারের উপরে পজিশন করা থাকে। CustomControlPosition.BOTTOM_END_BELOW পজিশনে কাস্টম কন্ট্রোল এবং শেষ প্রান্তে (LTR-এ ডানদিকে) যেকোনও Nav SDK UI এলিমেন্ট ম্যাপের নিচের দিকে অ্যালাইন করা থাকে। কাস্টম ফুটার থাকলে শেভরনের ডিফল্ট পজিশন পরিবর্তন হয় না, কারণ ফুটার ম্যাপের শেষ প্রান্ত পর্যন্ত বিস্তৃত হয় না।

CustomControlPosition.BOTTOM_START_BELOW এবং CustomControlPosition.BOTTOM_END_BELOW পজিশনে কাস্টম কন্ট্রোল, সেইসাথে Nav SDK UI এলিমেন্ট যেমন রি-সেন্টার বোতাম এবং Google লোগো কাস্টম কন্ট্রোল ফুটারের উপরে পজিশন করা হয়।

ম্যাপ UI অ্যাক্সেসরি

Android-এর জন্য Navigation SDK এমন UI অ্যাক্সেসরি প্রদান করে যা নেভিগেশনের সময় Android অ্যাপ্লিকেশনের জন্য Google Maps-এ পাওয়া অ্যাক্সেসরির মতোই দেখায়। এই বিভাগে যেমন বর্ণনা করা হয়েছে, আপনি সেই অনুযায়ী এইসব কন্ট্রোলের দৃশ্যমানতা বা ভিজ্যুয়াল অ্যাপিয়ারেন্স অ্যাডজাস্ট করতে পারবেন। আপনি এখানে যে পরিবর্তন করবেন তা পরবর্তী নেভিগেশন সেশনে দেখা যাবে।

নেভিগেশন UI-তে গ্রহণযোগ্য পরিবর্তন সংক্রান্ত নির্দেশিকার জন্য নীতি পৃষ্ঠা দেখুন।

কোড দেখুন

গন্তব্য হাইলাইট করা ও প্রবেশপথ

placeID-এর মাধ্যমে কোনও গন্তব্য তৈরি করা হলে, গন্তব্যের বিল্ডিং হাইলাইট করা হবে এবং সম্ভব হলে প্রবেশপথের আইকন দেখানো হবে। এইসব ভিজ্যুয়াল ইঙ্গিত ব্যবহারকারীদের তাদের গন্তব্য আলাদা করতে এবং সেখানে নেভিগেট করতে সাহায্য করে।

placeID-এর মাধ্যমে গন্তব্য তৈরি করতে, Waypoint.Builder.setPlaceIdString() পদ্ধতি ব্যবহার করুন।

নেভিগেশন হেডার পরিবর্তন করুন

নেভিগেশন হেডারের থিম এবং পরবর্তী-টার্ন ইন্ডিকেটর পরিবর্তন করতে NavigationFragment.setStylingOptions() অথবা NavigationView.setStylingOptions() ব্যবহার করুন, যা উপলভ্য থাকলে হেডারের নিচে দেখা যায়।

আপনি নিম্নলিখিত অ্যাট্রিবিউট সেট করতে পারবেন:

অ্যাট্রিবিউটের ধরনঅ্যাট্রিবিউট
ব্যাকগ্রাউন্ডের রঙ
  • প্রাথমিক ডে মোড - নেভিগেশন হেডারের দিনের বেলার রঙ
  • সেকেন্ডারি ডে মোড - পরবর্তী-টার্ন ইন্ডিকেটরের দিনের বেলার রঙ
  • প্রাথমিক নাইট মোড - নেভিগেশন হেডারের রাতের রঙ
  • সেকেন্ডারি নাইট মোড - পরবর্তী-টার্ন ইন্ডিকেটরের রাতের রঙ
নির্দেশাবলীর জন্য টেক্সট এলিমেন্ট
  • টেক্সটের রঙ
  • ফন্ট
  • প্রথম সারির টেক্সটের সাইজ
  • দ্বিতীয় সারির টেক্সটের সাইজ
পরবর্তী ধাপের জন্য টেক্সট এলিমেন্ট
  • ফন্ট
  • দূরত্বের ভ্যালুর টেক্সটের রঙ
  • দূরত্ব ভ্যালুর টেক্সট সাইজ
  • দূরত্ব মাপার এককের টেক্সটের রঙ
  • দূরত্ব মাপার এককের টেক্সট সাইজ
ম্যানুভার আইকন
  • বড় ম্যানুভার আইকনের রঙ
  • ছোট ম্যানুভার আইকনের রঙ
লেন সংক্রান্ত নির্দেশিকা
  • সাজেস্ট করা লেন বা লেনগুলির রঙ

স্টাইলিং বিকল্প কীভাবে সেট করতে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখুন:

private NavigationFragment mNavFragment;
mNavFragment = (NavigationFragment) getSupportFragmentManager()
  .findFragmentById(R.id.navigation_fragment);

// Set the styling options on the fragment.
mNavFragment.setStylingOptions(new StylingOptions()
  .primaryDayModeThemeColor(0xff1A237E)
  .secondaryDayModeThemeColor(0xff3F51B5)
  .primaryNightModeThemeColor(0xff212121)
  .secondaryNightModeThemeColor(0xff424242)
  .headerLargeManeuverIconColor(0xffffff00)
  .headerSmallManeuverIconColor(0xffffa500)
  .headerNextStepTypefacePath("/system/fonts/NotoSerif-BoldItalic.ttf")
  .headerNextStepTextColor(0xff00ff00)
  .headerNextStepTextSize(20f)
  .headerDistanceTypefacePath("/system/fonts/NotoSerif-Italic.ttf")
  .headerDistanceValueTextColor(0xff00ff00)
  .headerDistanceUnitsTextColor(0xff0000ff)
  .headerDistanceValueTextSize(20f)
  .headerDistanceUnitsTextSize(18f)
  .headerInstructionsTypefacePath("/system/fonts/NotoSerif-BoldItalic.ttf")
  .headerInstructionsTextColor(0xffffff00)
  .headerInstructionsFirstRowTextSize(24f)
  .headerInstructionsSecondRowTextSize(20f)
  .headerGuidanceRecommendedLaneColor(0xffffa500));

ট্রাফিক লেয়ার বন্ধ করা

ম্যাপে ট্রাফিক লেয়ার চালু বা বন্ধ করতে GoogleMap.setTrafficEnabled() ব্যবহার করুন। এই সেটিং ম্যাপে সামগ্রিকভাবে দেখানো ট্রাফিক ঘনত্বের নির্দেশকে প্রভাবিত করে। তবে, এটি নেভিগেটর দ্বারা প্লট করা রুটে ট্রাফিক সংক্রান্ত ইঙ্গিতকে প্রভাবিত করে না।

private GoogleMap mMap;
// Get the map, and when the async call returns, setTrafficEnabled
// (callback will be on the UI thread)
mMap = mNavFragment.getMapAsync(navMap -> navMap.setTrafficEnabled(false));

ট্রাফিক লাইট ও স্টপ সাইন

নেভিগেশন রুটে ট্রাফিক লাইট ও স্টপ সাইন আইকন।

অ্যাক্টিভ নেভিগেশনের সময়, ম্যাপ ট্রাফিক লাইট ও স্টপ সাইন দেখায় যাতে ব্যবহারকারী রুট ও আসন্ন টার্ন সম্পর্কে আরও তথ্য পান। ভার্সন ৮.০.০ থেকে শুরু করে, আপনি এই ফিচার বন্ধ করতে পারবেন না।

কাস্টম মার্কার যোগ করুন

Android-এর জন্য Navigation SDK এখন মার্কারের জন্য Google Maps API ব্যবহার করে। আরও তথ্যের জন্য Maps API ডকুমেন্টেশন দেখুন।

ফ্লোটিং টেক্সট

আপনার অ্যাপের যেকোনও জায়গায় ফ্লোটিং টেক্সট যোগ করতে পারবেন, তবে সেটি যেন Google অ্যাট্রিবিউশনকে ঢেকে না দেয়। Navigation SDK ম্যাপে অক্ষাংশ/দ্রাঘিমাংশ বা লেবেলে টেক্সট অ্যাঙ্কর করার সুবিধা দেয় না। আরও তথ্যের জন্য তথ্য উইন্ডো বিকল্পে যান।

সর্বোচ্চ গতিসীমা দেখুন

আপনি প্রোগ্র্যামাটিক প্রসেসে স্পিড লিমিট আইকন দেখাতে বা লুকাতে পারবেন। সর্বোচ্চ গতিসীমার আইকন দেখতে বা লুকাতে NavigationView.setSpeedLimitIconEnabled() বা NavigationFragment.setSpeedLimitIconEnabled() ব্যবহার করুন। চালু করা থাকলে, নেভিগেশন চলাকালীন স্ক্রিনের নিচের কোণে স্পিড লিমিট আইকন দেখানো হয়। গাড়িটি যে রাস্তায় চলছে, আইকনটি সেই রাস্তার স্পিড লিমিট দেখায়। এই আইকন শুধুমাত্র সেইসব লোকেশনেই দেখা যায় যেখানে স্পিড লিমিট সংক্রান্ত নির্ভরযোগ্য ডেটা উপলভ্য।

 // Display the Speed Limit icon
 mNavFragment.setSpeedLimitIconEnabled(true);

রিসেন্টার বোতাম দেখানো হলে, স্পিড লিমিট আইকন সাময়িকভাবে লুকানো থাকে।

নাইট মোড সেট করুন

আপনি প্রোগ্রাম্যাটিকভাবে নাইট মোডের আচরণ নিয়ন্ত্রণ করতে পারেন। নাইট মোড চালু বা বন্ধ করতে NavigationView.setForceNightMode() বা NavigationFragment.setForceNightMode() ব্যবহার করুন অথবা Android-এর জন্য Navigation SDK-কে এটি কন্ট্রোল করতে দিন।

  • AUTO ডিভাইসের লোকেশন ও স্থানীয় সময় অনুযায়ী Navigation SDK-কে উপযুক্ত মোড নির্ধারণ করতে দেয়।
  • FORCE_NIGHT নাইট মোড চালু করতে বাধ্য করে।
  • FORCE_DAY ডে মোড চালু করতে বাধ্য করে।

নিম্নলিখিত উদাহরণে দেখানো হয়েছে যে কীভাবে নেভিগেশন ফ্র্যাগমেন্টের মধ্যে নাইট মোড চালু করতে বাধ্য করা যায়:

// Force night mode on.
mNavFragment.setForceNightMode(FORCE_NIGHT);

দিকনির্দেশের তালিকা দেখান

প্রথমে, ভিউ তৈরি করে আপনার হায়ারার্কিতে যোগ করুন।

void setupDirectionsListView() {
  // Create the view.
  DirectionsListView directionsListView = new DirectionsListView(getApplicationContext());
  // Add the view to your view hierarchy.
  ViewGroup group = findViewById(R.id.directions_view);
  group.addView(directionsListView);

  // Add a button to your layout to close the directions list view.
  ImageButton button = findViewById(R.id.close_directions_button); // this button is part of the container we hide in the next line.
  button.setOnClickListener(
      v -> findViewById(R.id.directions_view_container).setVisibility(View.GONE));
}

NavigationView-এর মতো DirectionsListView-এও লাইফসাইকেল ইভেন্ট ফরওয়ার্ড করতে ভুলবেন না। যেমন:

protected void onResume() {
  super.onResume();
  directionsListView.onResume();
}

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

ইউজার ইন্টারফেসে অনেক বেশি তথ্য থাকলে, আপনি ডিফল্টের (দুটি) চেয়ে কম বিকল্প রুট দেখিয়ে বা কোনও বিকল্প রুট না দেখিয়ে তথ্য কম করতে পারেন। আপনি RoutingOptions.alternateRoutesStrategy() পদ্ধতি কল করে রুট ফেচ করার আগে এই বিকল্প কনফিগার করতে পারবেন। এর জন্য নিম্নলিখিত গণনা ভ্যালুর মধ্যে একটি ব্যবহার করতে হবে:

গুনতির ভ্যালুবিবরণ
AlternateRoutesStrategy.SHOW_ALL ডিফল্ট। সর্বাধিক দুটি বিকল্প রুট দেখায়।
AlternateRoutesStrategy.SHOW_ONE একটি বিকল্প রুট দেখায় (যদি একটি উপলভ্য থাকে)।
AlternateRoutesStrategy.SHOW_NONE বিকল্প রুট লুকায়।

বিকল্প রুট কীভাবে সম্পূর্ণভাবে লুকানো যায় তা নিম্নলিখিত কোডের উদাহরণ থেকে দেখানো হয়েছে।

RoutingOptions routingOptions = new RoutingOptions();
routingOptions.alternateRoutesStrategy(AlternateRoutesStrategy.SHOW_NONE);
navigator.setDestinations(destinations, routingOptions, displayOptions);

ট্রিপ প্রগ্রেস বার

নেভিগেশনে ট্রিপ প্রোগ্রেস বার যোগ করা হয়েছে।

ট্রিপ প্রগ্রেস বার হল একটি উল্লম্ব বার যা নেভিগেশন শুরু হলে ম্যাপের শুরু/লিডিং সাইডে দেখা যায়। এটি চালু করা থাকলে, এটি ব্যবহারকারীর গন্তব্য এবং বর্তমান অবস্থানের সাথে সাথে পুরো ট্রিপের একটি ওভারভিউ দেখায়।

এর ফলে ব্যবহারকারীরা জুম ইন না করেই ট্রাফিকের মতো আসন্ন সমস্যাগুলি আগে থেকেই বুঝতে পারবেন। প্রয়োজন হলে, তারা ট্রিপের রুট পরিবর্তন করতে পারবেন। ব্যবহারকারী ট্রিপের রুট পরিবর্তন করলে, প্রোগ্রেস বার রিসেট হয়ে যায় এবং সেই পয়েন্ট থেকে নতুন ট্রিপ শুরু হয়েছে বলে ধরে নেওয়া হয়।

ট্রিপ প্রোগ্রেস বার নিম্নলিখিত স্ট্যাটাস ইন্ডিকেটর দেখায়:

  • অতিক্রান্ত রুট—ট্রিপের অতিক্রান্ত অংশ।

  • বর্তমান অবস্থান—ট্রিপে ব্যবহারকারীর বর্তমান লোকেশন।

  • ট্রাফিক স্ট্যাটাস—আসন্ন ট্রাফিকের স্ট্যাটাস।

  • শেষ গন্তব্য—ট্রিপের শেষ গন্তব্য।

NavigationView বা NavigationFragment-এ setTripProgressBarEnabled() পদ্ধতি কল করে ট্রিপ প্রোগ্রেস বার চালু করুন। যেমন:

// Enable the trip progress bar.
mNavFragment.setTripProgressBarEnabled(true);

ট্রিপ প্রোগ্রেস বারের পজিশন

  • বারের বাঁদিকটি স্পিডোমিটার, Google লোগো এবং আবার-সেন্টার করুন বোতামের (যখন দেখা যায়) বাঁদিকের সাথে মোটামুটিভাবে অ্যালাইন করা থাকে। প্রস্থ হল ১২ ডিপি।
  • ট্রিপ প্রগ্রেস বারের উচ্চতা স্থির থাকে। ছোট ডিভাইসে উল্লম্ব স্পেসের সীমাবদ্ধতার সাথে মানিয়ে নিতে, স্ক্রিনের উচ্চতায় নির্দিষ্ট ব্রেকপয়েন্টের উপর ভিত্তি করে ট্রিপ প্রোগ্রেস বারের দৃশ্যমানতা ও উচ্চতা মানিয়ে নেয়। এই ব্রেকপয়েন্টগুলি ডিভাইসের ওরিয়েন্টেশন এবং স্ক্রিনে ম্যাপটি আসলে কতটা জায়গা নেয় তার উপর নির্ভর করে না:
  • স্ক্রিনের উচ্চতা ট্রিপ প্রগ্রেস বারের দৃশ্যমানতা ট্রিপ প্রগ্রেস বারের উচ্চতা ট্রিপ প্রগ্রেস বার y-অ্যাক্সিস পজিশন
    ছোট: ০ ডিপি - ৫৫১ ডিপি দেখা যাবে না প্রযোজ্য নয় প্রযোজ্য নয়
    মাঝারি: ৫৫২ ডিপি - ৭৩৯ ডিপি দৃশ্যমান 130 dp শুরুর দিকের কন্ট্রোলের উপরে (স্পিডোমিটার / Google লোগো / রি-সেন্টার বোতাম)
    বড়: ৭৪০ ডিপি এবং তার বেশি দৃশ্যমান ২৯০ ডিপি শুরুর দিকের কন্ট্রোলের উপরে (স্পিডোমিটার / Google লোগো / রি-সেন্টার বোতাম)
  • ট্রিপ প্রোগ্রেস বার যদি টার্ন কার্ড বা অন্যান্য নেভিগেশন UI এলিমেন্টের সাথে ওভারল্যাপ করে, তাহলে এটি সেই অন্যান্য এলিমেন্টের নিচে দেখা যায়।

কম্পাস

Navigation SDK একটি কম্পাস গ্রাফিক প্রদান করে যা নির্দিষ্ট পরিস্থিতিতে এবং শুধুমাত্র চালু থাকলে ম্যাপের উপরের ডানদিকের কোণায় প্রদর্শিত হয়। ব্যবহারকারী কম্পাসে ক্লিক করলে, ক্যামেরা অ্যানিমেট করে এমন একটি পজিশনে ফিরে যায় যেখানে বিয়ারিং শূন্য (ডিফল্ট ওরিয়েন্টেশন) এবং কম্পাসটি কিছুক্ষণ পরে অদৃশ্য হয়ে যায়।

নেভিগেশন চালু থাকলে এবং ক্যামেরা মোড "ফলো করা" হিসেবে সেট করা থাকলে, কম্পাস দেখা যায় এবং কম্পাসে ট্যাপ করলে টিল্ট করা ও ওভারভিউ ক্যামেরা ভিউয়ের মধ্যে টগল করা যায়।

ড্রাইভারের মনোযোগ যাতে বিঘ্নিত না হয়, সেই জন্য হেডার (পোর্ট্রেট মোডে) বড় হয়ে কম্পাসের ডিফল্ট পজিশনের সাথে ওভারল্যাপ করলে, কম্পাস একই পজিশনে থাকে। আপনি সেকেন্ডারি হেডার কাস্টম কন্ট্রোল বা হেডার অ্যাক্সেসরি ভিউ যোগ করলে, UI সংক্রান্ত সমস্যা এড়াতে কম্পাস লুকানো থাকে।

কম্পাসে দিন ও রাত মোডের পাশাপাশি ডার্ক মোডও কাজ করে।

কম্পাস ডিফল্ট হিসেবে চালু থাকে। GoogleMapOptions ক্লাসে compassEnabled পদ্ধতি ব্যবহার করে কম্পাস চালু করা আছে কিনা তা আপনি সেট করতে পারবেন।

3D বিল্ডিং বন্ধ করুন

পারফর্ম্যান্স-সীমাবদ্ধ ডিভাইসের জন্য, আপনি GoogleMap.setBuildingsEnabled(false) কল করে 3D বিল্ডিংয়ের ডিসপ্লে বন্ধ করতে পারেন।

Prompt Visibility API (Experimental)

Prompt Visibility API আপনাকে Navigation SDK দ্বারা জেনারেট করা UI এলিমেন্ট এবং আপনার নিজস্ব কাস্টম UI এলিমেন্টের মধ্যে দ্বন্দ্ব এড়াতে দেয়। এটি একটি Navigation SDK UI এলিমেন্ট প্রদর্শিত হওয়ার ঠিক আগে এবং এলিমেন্টটি সরানোর সাথে সাথে একটি কলব্যাক পাওয়ার জন্য একটি লিসেনার যোগ করে এটি করে। কোড স্যাম্পেল সহ আরও তথ্যের জন্য, রিয়েল-টাইম-বিঘ্ন কনফিগার করুন পৃষ্ঠার প্রম্পট ভিজিবিলিটি API বিভাগ দেখুন।