नेविगेशन यूज़र इंटरफ़ेस (यूआई) में बदलाव करना

Android के लिए Navigation SDK का इस्तेमाल करके, मैप पर उपयोगकर्ता अनुभव में बदलाव किया जा सकता है. इसके लिए, यह तय करें कि मैप पर पहले से मौजूद कौनसे यूज़र इंटरफ़ेस (यूआई) कंट्रोल और एलिमेंट दिखें. नेविगेशन यूज़र इंटरफ़ेस (यूआई) के विज़ुअल अपियरेंस में भी बदलाव किया जा सकता है. नेविगेशन यूज़र इंटरफ़ेस (यूआई) में किए जा सकने वाले बदलावों के बारे में जानने के लिए, नीतियों वाले पेज पर जाएं.

इस दस्तावेज़ में, अपने मैप के यूज़र इंटरफ़ेस में दो तरीकों से बदलाव करने के बारे में बताया गया है:

मैप के यूज़र इंटरफ़ेस (यूआई) कंट्रोल

नेविगेशन व्यू पर कस्टम यूज़र इंटरफ़ेस (यूआई) एलिमेंट दिखाने के लिए, मैप के यूज़र इंटरफ़ेस (यूआई) कंट्रोल का इस्तेमाल करें. इससे एलिमेंट सही जगह पर दिखेंगे. पहले से मौजूद लेआउट में बदलाव होने पर, Navigation SDK for Android आपके कस्टम कंट्रोल की जगह अपने-आप बदल देता है. हर पोज़िशन के लिए, एक बार में एक कस्टम कंट्रोल व्यू सेट किया जा सकता है. अगर आपके डिज़ाइन के लिए कई यूज़र इंटरफ़ेस (यूआई) एलिमेंट की ज़रूरत है, तो उन्हें ViewGroup में रखा जा सकता है और setCustomControl तरीके में पास किया जा सकता है.

setCustomControl मेथड से, CustomControlPosition enum में तय की गई पोज़िशन मिलती हैं:

  • SECONDARY_HEADER (सिर्फ़ पोर्ट्रेट मोड में दिखता है)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW
  • FOOTER
पोर्ट्रेट ओरिएंटेशन के लिए, कंट्रोल की पोज़िशन को पसंद के मुताबिक बनाने की सुविधा.
पोर्ट्रेट ओरिएंटेशन के लिए, कस्टम कंट्रोल की पोज़िशन
लैंडस्केप ओरिएंटेशन के लिए, कंट्रोल की पोज़िशन को पसंद के मुताबिक बनाने की सुविधा.
लैंडस्केप ओरिएंटेशन के लिए, पसंद के मुताबिक कंट्रोल की पोज़िशन

कोई कस्टम कंट्रोल जोड़ना

  1. कस्टम यूज़र इंटरफ़ेस (यूआई) एलिमेंट या ViewGroup की मदद से, Android व्यू बनाएं.
  2. व्यू का इंस्टेंस पाने के लिए, एक्सएमएल को इनफ़्लेट करें या कस्टम व्यू को इंस्टैंशिएट करें.
  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, दोनों में यह ईटीए कार्ड और/या कस्टम फ़ुटर के ऊपर मौजूद होता है. अगर दोनों में से कोई भी मौजूद नहीं है, तो यह मैप के सबसे नीचे मौजूद होता है. साथ ही, Nav SDK के एलिमेंट, जैसे कि री-सेंटर बटन और Google का लोगो, कस्टम कंट्रोल व्यू की ऊंचाई के हिसाब से ऊपर की ओर मूव करते हैं. यह कंट्रोल, मैप के दिखने वाले हिस्से के अंदर मौजूद होता है. इसलिए, मैप के सबसे नीचे या शुरुआती किनारों पर जोड़ी गई कोई भी पैडिंग, इस कंट्रोल की पोज़िशन को भी बदल देगी.

सबसे नीचे

पोर्ट्रेट ओरिएंटेशन के लिए, कस्टम कंट्रोल की पोज़िशन सबसे नीचे दाईं ओर सेट करें.
पोर्ट्रेट ओरिएंटेशन के लिए, कस्टम कंट्रोल की पोज़ीशन सबसे नीचे दाईं ओर सेट करें
लैंडस्केप ओरिएंटेशन के लिए, कस्टम कंट्रोल की पोज़िशन सबसे नीचे दाईं ओर है.
लैंडस्केप ओरिएंटेशन के लिए, कस्टम कंट्रोल की पोज़िशन सबसे नीचे दाईं ओर सेट करें

कस्टम कंट्रोल की इस पोज़िशन का इस्तेमाल करने के लिए, पोज़िशन CustomControlPosition.BOTTOM_END_BELOW को setCustomControl पर पास करें.

कस्टम कंट्रोल की यह पोज़िशन, मैप के सबसे नीचे वाले कोने में होती है. portrait mode में, यह ईटीए कार्ड और/या कस्टम फ़ुटर के ऊपर मौजूद होता है. अगर दोनों में से कोई भी मौजूद नहीं है, तो यह मैप के सबसे नीचे मौजूद होता है. हालांकि, landscape mode में यह मैप के सबसे नीचे मौजूद होता है. आखिरी हिस्से (एलटीआर में दाईं ओर) में दिखने वाले Nav SDK के सभी एलिमेंट, कस्टम कंट्रोल व्यू की ऊंचाई के हिसाब से ऊपर की ओर मूव हो जाते हैं. यह कंट्रोल, मैप के दिखने वाले हिस्से के अंदर मौजूद होता है. इसलिए, मैप के निचले या आखिरी किनारों पर जोड़ी गई कोई भी पैडिंग, इस कंट्रोल की पोज़िशन को भी बदल देगी.

पोर्ट्रेट ओरिएंटेशन के लिए, फ़ुटर में कस्टम कंट्रोल की पोज़िशन.
पोर्ट्रेट ओरिएंटेशन के लिए, फ़ुटर में कस्टम कंट्रोल की पोज़िशन
लैंडस्केप ओरिएंटेशन के लिए, फ़ुटर में कस्टम कंट्रोल की पोज़िशन.
लैंडस्केप ओरिएंटेशन के लिए, फ़ुटर के कस्टम कंट्रोल की पोज़िशन

कस्टम कंट्रोल की इस पोज़िशन का इस्तेमाल करने के लिए, पोज़िशन CustomControlPosition.FOOTER को setCustomControl पर पास करें.

कस्टम कंट्रोल की यह पोज़िशन, कस्टम फ़ुटर व्यू के लिए डिज़ाइन की गई है. अगर Nav SDK का ईटीए कार्ड दिख रहा है, तो यह कंट्रोल उसके ऊपर मौजूद होता है. अगर ऐसा नहीं है, तो कंट्रोल को मैप के सबसे नीचे अलाइन किया जाता है. BOTTOM_START_BELOW और BOTTOM_END_BELOW कस्टम कंट्रोल के उलट, यह कंट्रोल मैप के दिखने वाले दायरे से बाहर मौजूद होता है. इसका मतलब है कि मैप में जोड़ी गई कोई भी पैडिंग, इस कंट्रोल की पोज़िशन को नहीं बदलेगी.

portrait mode में, कस्टम फ़ुटर पूरी चौड़ाई में दिखता है. CustomControlPosition.BOTTOM_START_BELOW और CustomControlPosition.BOTTOM_END_BELOW, दोनों पोज़िशन में कस्टम कंट्रोल के साथ-साथ, Nav SDK के यूज़र इंटरफ़ेस (यूआई) एलिमेंट, जैसे कि री-सेंटर बटन और Google का लोगो, कस्टम कंट्रोल फ़ुटर के ऊपर मौजूद होते हैं. शेवरॉन की डिफ़ॉल्ट पोज़िशन, फ़ुटर की कस्टम ऊंचाई के हिसाब से तय होती है.

landscape mode में, कस्टम फ़ुटर की चौड़ाई आधी होती है और यह Nav SDK के ईटीए कार्ड की तरह ही, शुरुआत की ओर (एलटीआर में बाईं ओर) अलाइन होता है. CustomControlPosition.BOTTOM_START_BELOW पोज़िशन में मौजूद कस्टम कंट्रोल और नेविगेशन एसडीके के यूज़र इंटरफ़ेस (यूआई) एलिमेंट, जैसे कि री-सेंटर बटन और Google का लोगो, कस्टम कंट्रोल फ़ुटर के ऊपर मौजूद होते हैं. CustomControlPosition.BOTTOM_END_BELOW पोज़िशन में मौजूद कस्टम कंट्रोल और आखिरी हिस्से (बाएं से दाएं लिखे जाने वाले टेक्स्ट में दाईं ओर) में मौजूद कोई भी Nav SDK यूज़र इंटरफ़ेस (यूआई) एलिमेंट, मैप के सबसे निचले हिस्से के साथ अलाइन रहते हैं. कस्टम फ़ुटर मौजूद होने पर, शेवरॉन की डिफ़ॉल्ट पोज़िशन नहीं बदलती. ऐसा इसलिए होता है, क्योंकि फ़ुटर मैप के आखिरी हिस्से तक नहीं पहुंचता.

CustomControlPosition.BOTTOM_START_BELOW और CustomControlPosition.BOTTOM_END_BELOW पोज़िशन में कस्टम कंट्रोल के साथ-साथ, नेविगेशन एसडीके के यूज़र इंटरफ़ेस (यूआई) एलिमेंट, जैसे कि फिर से सेंटर करने वाला बटन और Google का लोगो, कस्टम कंट्रोल फ़ुटर के ऊपर मौजूद होते हैं.

मैप यूज़र इंटरफ़ेस (यूआई) की ऐक्सेसरी

Android के लिए Navigation SDK, यूज़र इंटरफ़ेस (यूआई) से जुड़ी ऐसी ऐक्सेसरी उपलब्ध कराता है जो नेविगेशन के दौरान दिखती हैं. ये ऐक्सेसरी, Android के लिए Google Maps ऐप्लिकेशन में मिलने वाली ऐक्सेसरी जैसी ही होती हैं. इस सेक्शन में बताए गए तरीके से, इन कंट्रोल को दिखने या न दिखने के लिए सेट किया जा सकता है. यहां किए गए बदलाव, अगले नेविगेशन सेशन के दौरान दिखते हैं.

नेविगेशन यूज़र इंटरफ़ेस (यूआई) में किए जाने वाले बदलावों के दिशा-निर्देशों के लिए, नीतियों वाला पेज देखें.

कोड देखना

मंज़िल और अंदर जाने के रास्तों को हाइलाइट करना

जब किसी डेस्टिनेशन को 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));

ट्रैफ़िक लाइट और स्टॉप साइन

नेविगेशन रूट पर ट्रैफ़िक लाइट और स्टॉप साइन के आइकॉन.

नेविगेशन के दौरान, मैप पर ट्रैफ़िक लाइट और स्टॉप साइन दिखते हैं. इससे उपयोगकर्ताओं को रास्ते और आने वाले मोड़ों के बारे में ज़्यादा जानकारी मिलती है. वर्शन 8.0.0 से, इस सुविधा को बंद नहीं किया जा सकता.

कस्टम मार्कर जोड़ना

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));
}

लाइफ़साइकल इवेंट को DirectionsListView पर फ़ॉरवर्ड करना न भूलें, ठीक उसी तरह जैसे वे NavigationView के साथ होते हैं. उदाहरण के लिए:

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 के लोगो, और फिर से बीच में लाने वाले बटन (दिखने पर) के बाईं ओर अलाइन होता है. इसकी चौड़ाई 12 डीपी है.
  • यात्रा की प्रोग्रेस बार की ऊंचाई एक जैसी रहती है. छोटी स्क्रीन वाले डिवाइसों पर वर्टिकल स्पेस की सीमाओं के हिसाब से, यात्रा की प्रोग्रेस बार की विज़िबिलिटी और ऊंचाई, स्क्रीन की ऊंचाई में तय किए गए ब्रेकपॉइंट के हिसाब से अडजस्ट होती है. ये ब्रेकपॉइंट, डिवाइस के ओरिएंटेशन और स्क्रीन पर मैप के लिए उपलब्ध जगह से अलग होते हैं:
  • स्क्रीन की ऊंचाई यात्रा की प्रोग्रेस बार की विज़िबिलिटी यात्रा की प्रोग्रेस बार की ऊंचाई यात्रा की प्रोग्रेस बार की Y-ऐक्सिस पोज़िशन
    छोटी: 0 डीपी - 551 डीपी नहीं दिख रहा है लागू नहीं लागू नहीं
    मीडियम: 552 डीपी - 739 डीपी दिख रहा है 130 डीपी शुरुआती साइड कंट्रोल के ऊपर (स्पीडोमीटर / Google का लोगो / फिर से बीच में लाने वाला बटन)
    बड़ी स्क्रीन: 740 डीपी और इससे ज़्यादा दिख रहा है 290 डीपी शुरुआती साइड कंट्रोल के ऊपर (स्पीडोमीटर / Google का लोगो / फिर से बीच में लाने वाला बटन)
  • अगर यात्रा की प्रोग्रेस बार, टर्न कार्ड या नेविगेशन यूज़र इंटरफ़ेस (यूआई) के अन्य एलिमेंट के साथ ओवरलैप होता है, तो यह उन अन्य एलिमेंट के नीचे दिखता है.

कंपास

Navigation SDK, कंपास ग्राफ़िक उपलब्ध कराता है. यह कुछ स्थितियों में मैप के सबसे ऊपर दाएं कोने में दिखता है. हालांकि, ऐसा सिर्फ़ तब होता है, जब इसे चालू किया गया हो. जब उपयोगकर्ता कंपास पर क्लिक करता है, तो कैमरा ऐनिमेट होकर वापस उस पोज़िशन पर आ जाता है जहां बेयरिंग शून्य (डिफ़ॉल्ट ओरिएंटेशन) होती है. इसके कुछ समय बाद, कंपास गायब हो जाता है.

अगर नेविगेशन चालू है और कैमरा मोड "फ़ॉलोइंग" पर सेट है, तो कंपास दिखता रहता है. कंपास पर टैप करने से, कैमरे के झुके हुए और खास जानकारी वाले व्यू के बीच टॉगल किया जा सकता है.

ड्राइवर का ध्यान भटकने से रोकने के लिए, कंपास अपनी जगह पर ही रहता है. ऐसा तब होता है, जब हेडर (पोर्ट्रेट मोड में) बड़ा हो जाता है और कंपास की डिफ़ॉल्ट जगह के साथ ओवरलैप होता है. अगर आपने सेकंडरी हेडर कस्टम कंट्रोल या हेडर ऐक्सेसरी व्यू जोड़ा है, तो यूज़र इंटरफ़ेस (यूआई) से जुड़ी समस्याओं से बचने के लिए, कंपास को छिपा दिया जाता है.

कंपास, दिन और रात के मोड के साथ-साथ गहरे रंग वाले मोड के साथ भी काम करता है.

कंपास की सुविधा डिफ़ॉल्ट रूप से चालू होती है. GoogleMapOptions क्लास पर compassEnabled तरीके का इस्तेमाल करके, यह सेट किया जा सकता है कि कंपास चालू है या नहीं.

3D बिल्डिंग की सुविधा बंद करना

कम परफ़ॉर्मेंस वाले डिवाइसों के लिए, GoogleMap.setBuildingsEnabled(false) को कॉल करके 3D बिल्डिंग का डिसप्ले बंद किया जा सकता है.

Prompt Visibility API (एक्सपेरिमेंट के तौर पर उपलब्ध)

Prompt Visibility API की मदद से, Navigation SDK से जनरेट किए गए यूज़र इंटरफ़ेस (यूआई) एलिमेंट और आपके कस्टम यूज़र इंटरफ़ेस (यूआई) एलिमेंट के बीच होने वाली गड़बड़ियों से बचा जा सकता है. इसके लिए, Navigation SDK के यूज़र इंटरफ़ेस (यूआई) एलिमेंट के दिखने से पहले और एलिमेंट के हटते ही कॉलबैक पाने के लिए, एक लिसनर जोड़ना होगा. कोड सैंपल के साथ-साथ ज़्यादा जानकारी के लिए, रीयल-टाइम में रुकावटों को कॉन्फ़िगर करें पेज पर मौजूद, Prompt Visibility API सेक्शन देखें.