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

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

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

মানচিত্র UI নিয়ন্ত্রণ

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

setCustomControl মেথডটি CustomControlPosition enum- এ সংজ্ঞায়িত পজিশনগুলো প্রদান করে:

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

একটি কাস্টম নিয়ন্ত্রণ যোগ করুন

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

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

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

একটি কাস্টম নিয়ন্ত্রণ সরান

একটি কাস্টম কন্ট্রোল অপসারণ করতে, ` null ভিউ প্যারামিটার এবং নির্বাচিত কাস্টম কন্ট্রোল পজিশন সহ ` setCustomControl মেথডটি কল করুন।

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

mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);

কাস্টম নিয়ন্ত্রণ অবস্থান

দ্বিতীয় শিরোনাম

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

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

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

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

নীচের শুরু

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

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

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

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

পোর্ট্রেট ওরিয়েন্টেশনের জন্য নিচের প্রান্তের কাস্টম কন্ট্রোল পজিশন।
পোর্ট্রেট ওরিয়েন্টেশনের জন্য নীচের প্রান্তের কাস্টম নিয়ন্ত্রণ অবস্থান
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য নিচের প্রান্তের কাস্টম কন্ট্রোল পজিশন।
ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য নীচের প্রান্তের কাস্টম নিয়ন্ত্রণ অবস্থান

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

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

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

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

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

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

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

CustomControlPosition.BOTTOM_START_BELOW এবং CustomControlPosition.BOTTOM_END_BELOW পজিশনে থাকা কাস্টম কন্ট্রোলগুলো, সেইসাথে রি-সেন্টার বাটন এবং গুগল লোগোর মতো নেভ এসডিকে ইউআই এলিমেন্টগুলো কাস্টম কন্ট্রোল ফুটারের উপরে অবস্থান করে।

মানচিত্র UI আনুষাঙ্গিক

অ্যান্ড্রয়েডের জন্য নেভিগেশন এসডিকে এমন UI অ্যাক্সেসরিজ প্রদান করে যা নেভিগেশনের সময় প্রদর্শিত হয়, যা অ্যান্ড্রয়েডের জন্য গুগল ম্যাপস অ্যাপ্লিকেশনে পাওয়া অ্যাক্সেসরিজগুলোর মতোই। এই বিভাগে বর্ণিত পদ্ধতি অনুযায়ী আপনি এই কন্ট্রোলগুলোর দৃশ্যমানতা বা বাহ্যিক রূপ সামঞ্জস্য করতে পারেন। এখানে আপনার করা পরিবর্তনগুলো পরবর্তী নেভিগেশন সেশনে প্রতিফলিত হবে।

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

কোডটি দেখুন

গন্তব্যস্থলের বিশেষ আকর্ষণ এবং প্রবেশপথ

যখন একটি placeID দিয়ে কোনো গন্তব্য তৈরি করা হয়, তখন গন্তব্য ভবনটি হাইলাইট করা হবে এবং সম্ভব হলে একটি প্রবেশ আইকন দেখানো হবে। এই দৃশ্যমান সংকেতগুলো ব্যবহারকারীদের তাদের গন্তব্য চিনতে এবং সেখানে যেতে সাহায্য করে।

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

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

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

আপনি নিম্নলিখিত বৈশিষ্ট্যগুলি নির্ধারণ করতে পারেন:

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

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

private SupportNavigationFragment mNavFragment;
mNavFragment = (SupportNavigationFragment) getFragmentManager()
  .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));

ট্র্যাফিক লাইট এবং স্টপ সাইন সক্রিয় করুন

সক্রিয় নেভিগেশন চলাকালীন আপনি ম্যাপে ট্র্যাফিক লাইট ও স্টপ সাইন প্রদর্শন চালু করতে পারেন, যা পথ ও ভ্রমণের কৌশল সম্পর্কে অতিরিক্ত ধারণা দেয়।

ডিফল্টরূপে, নেভিগেশন এসডিকে-তে ট্র্যাফিক লাইট এবং স্টপ সাইন নিষ্ক্রিয় থাকে। এই বৈশিষ্ট্যটি সক্রিয় করতে, প্রতিটি বৈশিষ্ট্যের জন্য আলাদাভাবে DisplayOptions কল করুন।

নিম্নলিখিত উদাহরণটি ট্র্যাফিক লাইট এবং স্টপ সাইন লুকানো দেখাচ্ছে:

DisplayOptions displayOptions =
  new DisplayOptions().showTrafficLights(true).showStopSigns(true);

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

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

ভাসমান লেখা

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

গতিসীমা প্রদর্শন করুন

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

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

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

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

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

  • AUTO ডিভাইসটির অবস্থান এবং স্থানীয় সময় অনুযায়ী নেভিগেশন 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 বা SupportNavigationFragment-setTripProgressBarEnabled() মেথডটি কল করে ট্রিপ প্রোগ্রেস বারটি সক্রিয় করুন। উদাহরণস্বরূপ:

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

ট্রিপ অগ্রগতি বার অবস্থান

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

কম্পাস

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

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

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

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

কম্পাসটি ডিফল্টরূপে সক্রিয় থাকে। আপনি GoogleMapOptions ক্লাসের compassEnabled মেথড ব্যবহার করে কম্পাসটি সক্রিয় থাকবে কিনা তা নির্ধারণ করতে পারেন।

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

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

প্রম্পট ভিজিবিলিটি এপিআই (পরীক্ষামূলক)

প্রম্পট ভিজিবিলিটি এপিআই আপনাকে নেভিগেশন এসডিকে দ্বারা তৈরি UI এলিমেন্ট এবং আপনার নিজস্ব কাস্টম UI এলিমেন্টের মধ্যেকার দ্বন্দ্ব এড়াতে সাহায্য করে। এটি একটি লিসেনার যোগ করার মাধ্যমে কাজ করে, যা নেভিগেশন এসডিকে-র কোনো UI এলিমেন্ট প্রদর্শিত হওয়ার ঠিক আগে এবং এলিমেন্টটি অপসারিত হওয়ার সাথে সাথেই একটি কলব্যাক গ্রহণ করে। কোড স্যাম্পলসহ আরও তথ্যের জন্য, ‘Configure real-time-disruptions ’ পেজের ‘Prompt Visibility API’ সেকশনটি দেখুন।