नेविगेशन यूज़र इंटरफ़ेस को पसंद के मुताबिक बनाएं

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

कोड देखें

नेविगेशन हेडर को पसंद के मुताबिक बनाना

नेविगेशन हेडर की थीम और हेडर के नीचे दिखने वाले 'अगला मोड़' इंंडिकेटर को उपलब्ध होने पर, बदलने के लिए NavigationFragment.setStylingOptions() या NavigationView.setStylingOptions() का इस्तेमाल करें.

इन एट्रिब्यूट को सेट किया जा सकता है:

विशेषता प्रकारविशेषताएं
बैकग्राउंड का रंग
  • प्राइमरी डे मोड - नेविगेशन हेडर का दिन के समय का रंग
  • द्वितीयक दिन मोड - अगले मोड़ के संकेतक का दिन के समय का रंग
  • प्राइमरी नाइट मोड - नेविगेशन हेडर का रात के समय का रंग
  • सेकंडरी नाइट मोड - अगले मोड़ के इंंडिकेटर का रात के समय का रंग
निर्देशों के लिए टेक्स्ट एलिमेंट
  • टेक्स्ट का रंग
  • फ़ॉन्ट
  • पहली लाइन के टेक्स्ट का साइज़
  • दूसरी पंक्ति के टेक्स्ट का साइज़
अगले चरणों के लिए टेक्स्ट एलिमेंट
  • फ़ॉन्ट
  • दूरी की वैल्यू के लिए टेक्स्ट का रंग
  • दूरी की वैल्यू के लिए टेक्स्ट का साइज़
  • दूरी की इकाइयों के लिए टेक्स्ट का रंग
  • दूरी की इकाइयों के टेक्स्ट का साइज़
नेविगेटर वाले आइकॉन
  • कौशल वाले बड़े आइकॉन का रंग
  • कौशल वाले छोटे आइकॉन का रंग
लेन गाइड
  • सुझाई गई लेन या लेन का रंग

नीचे दिए गए उदाहरण में, स्टाइल के विकल्प सेट करने का तरीका बताया गया है:

private NavigationFragment mNavFragment;
mNavFragment = (NavigationFragment) 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));

ट्रैफ़िक लेयर को बंद करना

मैप पर ट्रैफ़िक लेयर को चालू या बंद करने के लिए, NavigationMap.setTrafficEnabled() का इस्तेमाल करें. यह सेटिंग मैप पर दिखने वाले ट्रैफ़िक डेंसिटी पर असर डालती है. हालांकि, नेविगेटर के प्लॉट किए गए रास्ते के ट्रैफ़िक संकेतों पर इसका कोई असर नहीं पड़ता.

private NavigationMap mMap;
// Get the map.
mMap = mNavFragment.getMap();
// Turn off the traffic layer on the map.
mMap.setTrafficEnabled(false);

कस्टम मार्कर जोड़ें

अपने ऐप्लिकेशन या उपयोगकर्ताओं के लिए लोकप्रिय जगहों को दिखाने के लिए, मैप पर कस्टम मार्कर जोड़े जा सकते हैं. उदाहरण के लिए, हो सकता है कि आप रास्ते के आखिर में दिखने वाले पिकअप पॉइंट को दिखाना चाहें. मार्कर जोड़ने के लिए NavigationMap.addMarker() का इस्तेमाल करें. साथ ही, मार्कर पर मिले टैप को सुनने के लिए, NavigationMap.setOnMarkerClickListener() का इस्तेमाल करें.

नीचे दिया गया कोड, प्रोजेक्ट के ड्रॉ किए जा सकने वाले संसाधनों, R.drawable.ic_person_pin_48dp में स्टोर किए गए आइकॉन का इस्तेमाल करता है. अपने ऐप्लिकेशन के हिसाब से सही किसी भी इमेज का इस्तेमाल किया जा सकता है.

// Place a marker at the final destination.
if (mNavigator.getCurrentRouteSegment() != null) {
    LatLng destinationLatLng = mNavigator.getCurrentRouteSegment()
        .getDestinationLatLng();

    Bitmap destinationMarkerIcon = BitmapFactory.decodeResource(
            getResources(), R.drawable.ic_person_pin_48dp);

    mMap.addMarker(new MarkerOptions()
            .position(destinationLatLng)
            .icon(destinationMarkerIcon)
            .title("Destination marker"));

    // Listen for a tap on the marker.
    mMap.setOnMarkerClickListener(new NavigationMap.OnMarkerClickListener() {
        @Override
        public void onMarkerClick(Marker marker) {
            displayMessage("Marker tapped: "
                    + marker.getTitle() + ", at location "
                    + marker.getPosition().latitude + ", "
                    + marker.getPosition().longitude);
        }
    });
}

आपके पास कस्टम इमेज को मार्कर के तौर पर तय करने का विकल्प होता है. हालांकि, SDK टूल फ़िलहाल इन इमेज को टेक्स्ट के साथ लेबल करने की सुविधा नहीं देता. ज़्यादा जानकारी के लिए, मार्कर पसंद के मुताबिक बनाना लेख पढ़ें.

फ़्लोटिंग टेक्स्ट

जब तक Google एट्रिब्यूशन को शामिल नहीं किया जाता, तब तक आपके ऐप्लिकेशन में कहीं भी फ़्लोटिंग टेक्स्ट जोड़ा जा सकता है. नेविगेशन SDK टूल से, मैप पर किसी अक्षांश/देशांतर या किसी लेबल पर टेक्स्ट को ऐंकर करने की सुविधा काम नहीं करती. ज़्यादा जानकारी के लिए, जानकारी विंडो देखें.

रफ़्तार की सीमा दिखाएं

आपके पास प्रोग्राम के हिसाब से, स्पीड सीमा के आइकॉन को दिखाने या छिपाने का विकल्प होता है. स्पीड सीमा के आइकॉन को दिखाने या छिपाने के लिए, NavigationFragment.setSpeedLimitIconEnabled(), NavigationView.setSpeedLimitIconEnabled() या SupportNavigationFragment.setSpeedLimitIconEnabled() का इस्तेमाल करें. चालू होने पर, निर्देश के दौरान रफ़्तार की सीमा आइकॉन सबसे नीचे कोने में दिखता है. इस आइकॉन से पता चलता है कि वाहन किस रफ़्तार से चल रहा है. आइकॉन सिर्फ़ उन जगहों पर दिखता है जहां रफ़्तार की सीमा से जुड़ा भरोसेमंद डेटा मौजूद है.

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

फिर से बीच में लाने वाले बटन के दिखने पर, स्पीड सीमा वाला आइकॉन कुछ समय के लिए छिप जाता है.

नाइट मोड सेट करें

नाइट मोड की सुविधा को प्रोग्राम के हिसाब से कंट्रोल किया जा सकता है. नाइट मोड को चालू या बंद करने के लिए NavigationFragment.setForceNightMode(), NavigationView.setForceNightMode() या SupportNavigationFragment.setForceNightMode() का इस्तेमाल करें. इसके अलावा, नेविगेशन SDK टूल को इसे कंट्रोल करने दें.

  • AUTO नेविगेशन SDK टूल को डिवाइस की जगह और स्थानीय समय के मुताबिक सही मोड तय करने देता है.
  • FORCE_NIGHT की मदद से, नाइट मोड चालू किया जा सकता है.
  • FORCE_DAY, दिन मोड को ज़बरदस्ती चालू करता है.

नीचे दिए गए उदाहरण में, नेविगेशन फ़्रैगमेंट में ज़बरदस्ती नाइट मोड को चालू करने के बारे में बताया गया है:

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

दिशा-निर्देशों की सूची दिखाएं

सबसे पहले, व्यू बनाएं और उसे अपने क्रम में जोड़ें.

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

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

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