Android के लिए नेविगेशन SDK टूल का इस्तेमाल करके, अपने मैप पर उपयोगकर्ता अनुभव को बेहतर बनाया जा सकता है. ऐसा करने के लिए, पहले से मौजूद यूज़र इंटरफ़ेस (यूआई) कंट्रोल और एलिमेंट तय करें. नेविगेशन यूज़र इंटरफ़ेस (यूआई) के विज़ुअल लुक में भी बदलाव किया जा सकता है. नेविगेशन यूज़र इंटरफ़ेस (यूआई) में स्वीकार किए जाने वाले बदलावों से जुड़े दिशा-निर्देशों के लिए, नीतियां पेज देखें.
यह दस्तावेज़ आपके मैप के यूज़र इंटरफ़ेस में दो तरीकों से बदलाव करने का तरीका बताता है:
मैप के यूज़र इंटरफ़ेस (यूआई) के कंट्रोल
मैप के यूज़र इंटरफ़ेस (यूआई) कंट्रोल, नेविगेशन व्यू के सबसे ऊपर मौजूद होते हैं. बिल्ट-इन लेआउट में बदलाव होने पर, Android के लिए नेविगेशन SDK टूल, आपके कस्टम कंट्रोल की जगह अपने-आप बदल देता है. लेआउट की हर पोज़िशन के लिए, अपने हिसाब से एक कंट्रोल सेट किया जा सकता है. कस्टम कंट्रोल एक यूज़र इंटरफ़ेस (यूआई) एलिमेंट हो सकता है. इसके अलावा, अगर आपके डिज़ाइन के लिए ज़्यादा डिज़ाइन की ज़रूरत है, तो कई यूज़र इंटरफ़ेस (यूआई) एलिमेंट के साथ ViewGroup
का इस्तेमाल किया जा सकता है.
setCustomControl
का तरीका, CustomControlPosition
enum में बताई गई पोज़िशन देता है:
SECONDARY_HEADER
(यह सिर्फ़ पोर्ट्रेट मोड में दिखता है)BOTTOM_START_BELOW
BOTTOM_END_BELOW
इस इमेज में, यूज़र इंटरफ़ेस (यूआई) कंट्रोल की अलग-अलग स्थितियों के उदाहरण दिखाए गए हैं. इससे, ड्राइवर की जगह के बारे में जानकारी मिलती है.
अपनी पसंद के मुताबिक सेकंडरी हेडर जोड़ें
नेविगेशन मोड में स्क्रीन लेआउट डिफ़ॉल्ट रूप से, मुख्य हेडर के नीचे मौजूद सेकंडरी हेडर के लिए पोज़िशन देते हैं. यह सेकंडरी हेडर ज़रूरी होने पर दिखता है, जैसे लेन के दिशा-निर्देश देने पर. आपका ऐप्लिकेशन कस्टम कॉन्टेंट के लिए, लेआउट की इस दूसरी हेडर पोज़िशन का इस्तेमाल कर सकता है. इस सुविधा का इस्तेमाल करने पर, आपके कंट्रोल में डिफ़ॉल्ट तौर पर दूसरा हेडर कॉन्टेंट शामिल हो जाता है. अगर आपके नेविगेशन व्यू में बैकग्राउंड है, तो वह बैकग्राउंड अपनी जगह पर ही रहता है और दूसरे हेडर से कवर होता है. जब आपका ऐप्लिकेशन कस्टम कंट्रोल हटाता है, तो उसकी जगह पर कोई भी डिफ़ॉल्ट सेकंडरी हेडर दिख सकता है.
कस्टम सेकंडरी हेडर की पोज़िशन, सबसे ऊपर के किनारे को मुख्य हेडर के निचले किनारे के साथ अलाइन करती है. यह स्थान केवल portrait mode
में समर्थित है. landscape mode
में, सेकंडरी हेडर उपलब्ध नहीं है और लेआउट में भी बदलाव नहीं होता.
- कस्टम यूज़र इंटरफ़ेस (यूआई) एलिमेंट या ViewGroup के साथ Android व्यू बनाएं.
- व्यू का इंस्टेंस पाने के लिए, एक्सएमएल को इनफ़्लेट करें या कस्टम व्यू को इंस्टैंशिएट करें, ताकि इसे सेकंडरी हेडर के तौर पर जोड़ा जा सके.
NavigationView.setCustomControl
याSupportNavigationFragment.setCustomControl
का इस्तेमाल CustomControlPosition के साथ, स्टिकर_हेडर के तौर पर करें.नीचे दिए गए उदाहरण में फ़्रैगमेंट बनाया गया है और हेडर की दूसरी पोज़िशन में कस्टम कंट्रोल जोड़ा गया है.
mNavFragment.setCustomControl(getLayoutInflater(). inflate(R.layout.your_custom_control, null), CustomControlPosition.SECONDARY_HEADER);
सेकंडरी हेडर हटाना
सेकंडरी हेडर को हटाने और डिफ़ॉल्ट कॉन्टेंट पर वापस जाने के लिए, setCustomControl
तरीके का इस्तेमाल करें.
व्यू हटाने के लिए, व्यू को null
पर सेट करें.
mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);
नेविगेशन व्यू में सबसे नीचे कस्टम कंट्रोल जोड़ें
आपका ऐप्लिकेशन, नेविगेशन व्यू के निचले किनारे में कस्टमाइज़ किया गया कस्टम कंट्रोल तय कर सकता है. जब आपके ऐप्लिकेशन में कस्टम कंट्रोल जोड़ा जाता है, तो 'री-सेंटर' बटन और Google लोगो को उसके हिसाब से ऊपर की ओर ले जाया जाता है.
- उस यूज़र इंटरफ़ेस (यूआई) एलिमेंट या व्यू ग्रुप के साथ Android व्यू बनाएं जिसे जोड़ना है.
- नेविगेशन व्यू या फ़्रैगमेंट बनाएं.
- नेविगेशन व्यू या फ़्रैगमेंट पर
setCustomControl
तरीके को कॉल करें और इस्तेमाल करने के लिए कंट्रोल और जगह की जानकारी दें.
नीचे दिए गए उदाहरण में, SupportNavigationFragment
में जोड़े गए कस्टम View
के बारे में बताया गया है:
private SupportNavigationFragment mNavFragment;
mNavFragment = (SupportNavigationFragment)
getFragmentManager().findFragmentById(R.id.navigation_fragment);
// Create the custom control view.
MyCustomView myCustomView = new MyCustomView();
// Add the custom control to the bottom end corner of the layout.
mNavFragment.setCustomControl(myCustomView, CustomControlPosition.
BOTTOM_END_BELOW);
कस्टम कंट्रोल हटाना
कस्टम कंट्रोल हटाने के लिए, setCustomControl
तरीके का इस्तेमाल करें और कंट्रोल की वह पोज़िशन बताएं जिसे आपको हटाना है.
उस पोज़िशन के लिए व्यू को null
पर सेट करें.
mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);
मैप यूज़र इंटरफ़ेस (यूआई) की ऐक्सेसरी
Android के लिए नेविगेशन SDK, नेविगेशन के दौरान Google Maps ऐप्लिकेशन में मिलने वाली सुविधाओं से मिलती-जुलती चीज़ें उपलब्ध कराता है. इस सेक्शन में बताए गए तरीके से, इन कंट्रोल के दिखने या दिखने के तरीके में बदलाव किया जा सकता है. यहां किए गए बदलाव, ड्राइवर की अगली यात्रा के दौरान दिखते हैं.
नेविगेशन यूज़र इंटरफ़ेस (यूआई) में स्वीकार किए जाने वाले बदलावों से जुड़े दिशा-निर्देशों के लिए, नीतियां पेज देखें.
कोड देखें
नेविगेशन हेडर में बदलाव करना
नेविगेशन हेडर की थीम और हेडर के नीचे दिखने वाले 'अगला मोड़' इंंडिकेटर को उपलब्ध होने पर, बदलने के लिए 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));
ट्रैफ़िक लाइट चालू करना और साइनबोर्ड रोकना
मैप यूज़र इंटरफ़ेस (यूआई) में ट्रैफ़िक लाइट की सुविधा चालू की जा सकती है और साइन को बंद किया जा सकता है. इस सुविधा से, ड्राइवर अपने रास्ते के साथ-साथ ट्रैफ़िक लाइट या साइन आइकॉन वाले आइकॉन दिखाना बंद कर सकता है, जिससे कि सफ़र को आसान और सटीक बनाने में मदद मिलती है.
डिफ़ॉल्ट रूप से, नेविगेशन SDK टूल में ट्रैफ़िक लाइट और स्टॉप साइन बंद रहते हैं. इस सुविधा को चालू करने के लिए, हर सुविधा के लिए अलग-अलग DisplayOptions
पर कॉल करें.
DisplayOptions displayOptions =
new DisplayOptions().showTrafficLights(true).showStopSigns(true);
कस्टम मार्कर जोड़ें
Android के लिए नेविगेशन SDK टूल, अब मार्कर के लिए Google Maps API का इस्तेमाल करता है. ज़्यादा जानकारी के लिए, Maps API से जुड़े दस्तावेज़ पर जाएं.
फ़्लोटिंग टेक्स्ट
अपने ऐप्लिकेशन में कहीं भी फ़्लोटिंग टेक्स्ट जोड़ा जा सकता है, बशर्ते कि वह टेक्स्ट Google एट्रिब्यूशन को कवर न करता हो. नेविगेशन SDK टूल से, मैप पर किसी अक्षांश/देशांतर या किसी लेबल पर टेक्स्ट को ऐंकर करने की सुविधा काम नहीं करती. ज़्यादा जानकारी के लिए, जानकारी विंडो पर जाएं.
रफ़्तार की सीमा दिखाएं
आपके पास प्रोग्राम के हिसाब से, स्पीड सीमा के आइकॉन को दिखाने या छिपाने का विकल्प होता है.
रफ़्तार की सीमा का आइकॉन दिखाने या छिपाने के लिए, NavigationView.setSpeedLimitIconEnabled()
या SupportNavigationFragment.setSpeedLimitIconEnabled()
का इस्तेमाल करें. चालू होने पर, निर्देश के दौरान रफ़्तार की सीमा
आइकॉन सबसे नीचे कोने में दिखता है. इस आइकॉन से पता चलता है कि
वाहन किस रफ़्तार से चल रहा है. आइकॉन सिर्फ़ उन जगहों पर दिखता है जहां रफ़्तार की सीमा से जुड़ा भरोसेमंद डेटा मौजूद है.
// Display the Speed Limit icon
mNavFragment.setSpeedLimitIconEnabled(true);
फिर से बीच में लाने वाले बटन के दिखने पर, स्पीड सीमा वाला आइकॉन कुछ समय के लिए छिप जाता है.
नाइट मोड सेट करें
नाइट मोड की सुविधा को प्रोग्राम के हिसाब से कंट्रोल किया जा सकता है.
नाइट मोड को चालू या बंद करने के लिए, NavigationView.setForceNightMode()
या SupportNavigationFragment.setForceNightMode()
का इस्तेमाल करें या Android के नेविगेशन 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));
}
लाइफ़ साइकल के इवेंट को 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 या SupportNavigationFragment पर setTripProgressBarEnabled()
तरीके को कॉल करके, यात्रा के प्रोग्रेस बार को चालू करें.
उदाहरण के लिए:
// Enable the trip progress bar.
mNavFragment.setTripProgressBarEnabled(true);