रीयल-टाइम में होने वाली रुकावटों को कॉन्फ़िगर करना
रीयल-टाइम में होने वाली रुकावटों की जानकारी देने वाली सुविधाओं का मकसद, लोगों को उनके रास्ते में आने वाली रुकावटों के बारे में सूचना देना है. साथ ही, लोगों को उन रुकावटों की शिकायत करने और उनकी पुष्टि करने की सुविधा देना है. बाधाओं के उदाहरणों में वाहन दुर्घटनाएं, ट्रैफ़िक जाम, पुलिस और स्पीड कैमरे की मौजूदगी, निर्माण कार्य, लेन बंद होना, और मौसम की कुछ स्थितियां शामिल हैं. इस पेज पर, रीयल-टाइम में रुकावट की जानकारी देने वाली सुविधाओं और उनके कॉन्फ़िगरेशन के विकल्पों के बारे में बताया गया है. इसमें, कस्टम नेविगेशन यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करने वाले ऐप्लिकेशन के बारे में भी जानकारी दी गई है.
सड़क बंद होने के बारे में रीयल-टाइम में सूचनाएं देने वाली सुविधाएं
Navigation SDK में, रास्ते में किसी तरह की रुकावट की जानकारी देने वाली ये सुविधाएं शामिल हैं. ये सुविधाएं, नेविगेशन की मुख्य सुविधाओं का हिस्सा हैं:- रास्तों पर किसी तरह की रुकावट वाले इंटरैक्टिव कॉलआउट.
- नेविगेशन चालू रहने के दौरान, रास्ते में रुकावट आने पर अपने-आप सूचनाएं पाने और वोट करने की सुविधा.
- नेविगेशन चालू रहने के दौरान, किसी तरह की रुकावट की जानकारी देना.
इन सुविधाओं को कॉन्फ़िगर किया जा सकता है. ये डिफ़ॉल्ट रूप से चालू रहती हैं. यहां दिए गए सेक्शन में, सुविधाओं और कॉन्फ़िगरेशन के उपलब्ध विकल्पों के बारे में ज़्यादा जानकारी दी गई है.
रास्तों पर रुकावटों के बारे में इंटरैक्टिव कॉलआउट
जब कोई ऐप्लिकेशन, रास्ते की जानकारी या नेविगेशन के दौरान कोई रास्ता दिखाता है, तो रास्ते में आने वाली मौजूदा रुकावटें, रास्ते के साथ कॉलआउट के तौर पर दिखती हैं. ट्रैफ़िक लेयर चालू करने पर, रास्ते से हटकर होने वाली रुकावटें भी मैप पर दिखती हैं. कॉलआउट में एक आइकॉन शामिल होता है. इससे पता चलता है कि किस तरह की समस्या आ रही है.
shouldDisplayPrompts का इस्तेमाल करके, रास्ते में होने वाली रुकावटों के कॉलआउट दिखने की सुविधा को कंट्रोल किया जा सकता है. इससे किसी रुकावट के पास पहुंचने पर, उपयोगकर्ता को अपने-आप दिखने वाली सूचनाओं को भी कंट्रोल किया जा सकता है.
mapView.navigator.shouldDisplayPrompts = true
जब कोई उपयोगकर्ता कॉलआउट पर टैप करता है, तब उसे रुकावट की जानकारी दिखाएं
किसी रुकावट के कॉलआउट पर टैप करने से, ज़्यादा जानकारी वाला जानकारी कार्ड खुलता है. यह सुविधा, रास्ते में और रास्ते से हटकर किए गए कॉलआउट, दोनों पर लागू होती है. हालांकि, रास्ते से हटकर किए गए कॉलआउट सिर्फ़ तब दिखते हैं, जब ट्रैफ़िक लेयर चालू हो. कार्ड में, रुकावट की वजह, रुकावट की आखिरी रिपोर्टिंग का समय, और कभी-कभी यह विकल्प दिखता है कि रुकावट अब भी मौजूद है या नहीं. उपयोगकर्ता के ऐक्टिव नेविगेशन में होने या न होने के आधार पर, जानकारी कार्ड का टाइप और उसके कॉन्फ़िगरेशन के विकल्प अलग-अलग होते हैं.
नेविगेशन शुरू करने से पहले, रास्ते की खास जानकारी देने वाले कॉलआउट सूचना कार्ड
नेविगेशन शुरू करने से पहले, उपयोगकर्ता मैप या रास्ते की खास जानकारी पर मौजूद, रास्ते में या रास्ते से हटकर मौजूद कॉलआउट पर टैप करके, जानकारी वाला कार्ड खोल सकते हैं. रास्ते से हटकर की गई कॉलआउट के लिए, ट्रैफ़िक लेयर चालू होनी चाहिए. जानकारी वाले कार्ड में, गड़बड़ी के बारे में ज़्यादा जानकारी दी गई है.
showsIncidentCards का इस्तेमाल करके, यह कंट्रोल किया जा सकता है कि उपयोगकर्ता रास्ते की खास जानकारी में दिखने वाले रुकावट के कॉलआउट पर टैप करके, ज़्यादा जानकारी देख पाएं या नहीं.
mapView.settings.showsIncidentCards = true
नेविगेशन के दौरान कॉलआउट की जानकारी देने वाले कार्ड
नेविगेशन चालू होने पर, उपयोगकर्ता रास्ते में या रास्ते से हटकर किसी रुकावट के कॉलआउट पर टैप करके, जानकारी कार्ड खोल सकते हैं. कार्ड में, गड़बड़ी का टाइप और पिछली बार रिपोर्ट किए जाने का समय दिखता है. इसमें उपयोगकर्ताओं के लिए बटन भी शामिल होते हैं. इन बटन का इस्तेमाल करके, उपयोगकर्ता यह वोट कर सकते हैं कि गड़बड़ी अब भी मौजूद है या नहीं.
सड़क बंद होने के अलावा, रास्ते में और रास्ते से हटकर होने वाली रुकावटों के लिए वोटिंग की जा सकती है. हालांकि, यह सुविधा उपयोगकर्ता के पांच किलोमीटर के दायरे में ही उपलब्ध है. Google इन वोटों को प्रोसेस करता है, ताकि यह तय किया जा सके कि रुकावट की जानकारी दिखाना जारी रखना है या नहीं. ये वोट, Google Maps और Navigation SDK इस्तेमाल करने वाले अन्य लोगों को भी मैप पर दिख सकते हैं.
नेविगेशन के दौरान, रुकावटों के कॉलआउट दिखने और उन पर टैप करने की सुविधा को कंट्रोल किया जा सकता है. इसके लिए, shouldDisplayPrompts का इस्तेमाल करें. इससे रास्तों के साथ कॉलआउट दिखने और किसी रुकावट के पास पहुंचने पर, अपने-आप दिखने वाली सूचनाएं भी कंट्रोल की जा सकती हैं.
mapView.navigator.shouldDisplayPrompts = true
नेविगेशन चालू रहने के दौरान, सड़क बंद होने की सूचनाएं अपने-आप पाने और वोट करने की सुविधा
नेविगेशन चालू होने के दौरान, जब कोई व्यक्ति किसी रास्ते पर आने वाली रुकावट के पास पहुंचता है, तो उसे एक प्रॉम्प्ट दिखता है. इसमें रुकावट के बारे में जानकारी होती है. साथ ही, यह वोट करने के लिए बटन होते हैं कि क्या रुकावट अब भी मौजूद है. उपयोगकर्ताओं के सबमिट किए गए वोट को Google प्रोसेस करता है. साथ ही, इन्हें Google Maps और Navigation SDK इस्तेमाल करने वाले अन्य लोगों के लिए, मैप पर दिखाया जा सकता है. इसके अलावा, इनका इस्तेमाल यह तय करने के लिए भी किया जा सकता है कि रुकावट की जानकारी दिखानी है या नहीं.
नेविगेशन चालू होने के दौरान, सूचना वाले प्रॉम्प्ट के दिखने की सुविधा को कॉन्फ़िगर किया जा सकता है. इसके लिए, shouldDisplayPrompts का इस्तेमाल करें. इससे रास्ते के साथ-साथ कॉलआउट के दिखने की सुविधा को भी कंट्रोल किया जा सकता है.
mapView.navigator.shouldDisplayPrompts = true
नेविगेशन चालू रहने के दौरान, सड़क बंद होने की जानकारी देना
ऐक्टिव नेविगेशन मोड के दौरान, नेविगेशन यूज़र इंटरफ़ेस (यूआई) पर एक बटन दिखता है. इसकी मदद से उपयोगकर्ता, रास्ते में आने वाली नई समस्याओं की शिकायत कर सकते हैं. जब कोई उपयोगकर्ता बटन पर टैप करता है, तो उसे एक मेन्यू दिखता है. इसमें रुकावट की उन सभी तरह की समस्याओं की जानकारी होती है जिनकी शिकायत की जा सकती है. उपयोगकर्ताओं की ओर से सबमिट की गई रिपोर्ट को Google प्रोसेस करता है. साथ ही, इन्हें Google Maps और Navigation SDK इस्तेमाल करने वाले अन्य लोगों के लिए मैप पर दिखाया जा सकता है.
स्टैंडर्ड रिपोर्टिंग बटन दिखाना या छिपाना
navigationReportIncidentButtonEnabled का इस्तेमाल करके, नेविगेशन चालू होने के दौरान स्टैंडर्ड रिपोर्टिंग बटन के दिखने की सुविधा को कॉन्फ़िगर किया जा सकता है.
// Enables the incident reporting FAB to show in situations where incident // reporting is possible. mapView.settings.navigationReportIncidentButtonEnabled = true
कस्टम रिपोर्टिंग बटन जोड़ना
नेविगेशन यूज़र इंटरफ़ेस (यूआई) में, स्टैंडर्ड डिसरप्शन रिपोर्टिंग बटन की जगह कस्टम रिपोर्टिंग बटन जोड़ा जा सकता है. जब उपयोगकर्ता कस्टम बटन पर क्लिक करता है, तब presentReportIncidentsPanel तरीके को कॉल करके, रिपोर्टिंग मेन्यू को दिखाया जा सकता है. कस्टम रिपोर्टिंग बटन जोड़ने से पहले, पुष्टि करें कि ऐप्लिकेशन चालू नेविगेशन में हो और उपयोगकर्ता उस देश में हो जहां रिपोर्टिंग की सुविधा चालू है. इसके लिए, reportIncidentsAvailable को कॉल करें. अगर इनमें से कोई भी एक शर्त पूरी नहीं होती है, तो रिपोर्टिंग मेन्यू नहीं दिखेगा.
// Check if reporting is available before displaying your button let isReportingAvailable = mapview.isIncidentReportingAvailable() customReportingIncidentButton.isHidden = !isReportingAvailable customReportingIncidentButton.addTarget(self, action: #selector(didTapReportIncidentButton), for: .touchUpInside) // Trigger the reporting flow if the button is clicked func didTapReportIncidentButton() { mapView.presentReportIncidentsPanel(self) { [weak self] error in guard let self = self else { return } if let error = error as NSError? { if error.domain == GMSMapViewPresentReportIncidentPanelErrorDomain { let errorCode = GMSMapViewPresentReportIncidentPanelErrorCode(rawValue: error.code) switch errorCode { case .internal: self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "An internal error occurred." ) case .reportingNotAvailable: self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "Reporting is not available." ) case .none: self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "An unknown error occurred." ) } } else { // Handle other potential errors (e.g., network errors) self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "An unexpected error occurred: \(error.localizedDescription)" ) } } // If error is nil, the panel was presented successfully. You can add any extra logic here. } }
कस्टम नेविगेशन यूज़र इंटरफ़ेस (यूआई) के साथ काम करना
अगर आपने Navigation SDK टूल को लागू करते समय कस्टम यूज़र इंटरफ़ेस (यूआई) एलिमेंट शामिल किए हैं, तो आपको टकराव से बचने के लिए, रीयल-टाइम में होने वाली रुकावटों के एलिमेंट को ध्यान में रखना होगा.
'शिकायत करें' बटन की पोज़िशन
डिफ़ॉल्ट रूप से, रुकावट की जानकारी देने वाला बटन, मैप के सबसे नीचे/आखिरी कोने में होता है. यह बटन, बाईं से दाईं ओर लिखी जाने वाली भाषाओं के लिए दाईं ओर और दाईं से बाईं ओर लिखी जाने वाली भाषाओं के लिए बाईं ओर होता है. अगर आपको कस्टम यूज़र इंटरफ़ेस (यूआई) एलिमेंट के लिए जगह बनाने के लिए, रिपोर्टिंग बटन को दूसरी जगह ले जाना है, तोbottomTrailingButtonsLayoutGuide का इस्तेमाल करें.
Swift
// Create a new layout guide let topRightLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current reporting button is of fixed height topRightLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 50).isActive = true topRightLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -14).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide // Create an alternate layout guide to use when the header and the footer are not full width let topRightAlternateLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightAlternateLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height topRightAlternateLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 20).isActive = true topRightAlternateLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide
Objective-C
// Create a new layout guide UILayoutGuide *topRightLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide; // Create an alternate layout guide to use when the header and the footer are not full width UILayoutGuide *topRightAlternateLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightAlternateLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightAlternateLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightAlternateLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide;
Prompt Visibility API (Experimental)
Prompt Visibility API की मदद से, Navigation SDK से जनरेट हुए यूज़र इंटरफ़ेस (यूआई) एलिमेंट और आपके कस्टम यूज़र इंटरफ़ेस (यूआई) एलिमेंट के बीच होने वाले टकरावों से बचा जा सकता है. इसके लिए, यह एपीआई एक लिसनर जोड़ता है, ताकि Navigation SDK का कोई यूज़र इंटरफ़ेस (यूआई) एलिमेंट दिखने से पहले और जैसे ही एलिमेंट हटता है, आपको कॉलबैक मिल सके. आपको रीयल-टाइम में होने वाली रुकावटों के एलिमेंट के लिए, कॉलबैक मिल सकते हैं. इनमें जानकारी वाले कार्ड, प्रॉम्प्ट, और रुकावट की शिकायत करने वाला मेन्यू शामिल है. साथ ही, आपको Navigation SDK से जनरेट होने वाली अन्य सूचनाएं भी मिल सकती हैं.Swift
// Additional methods added to GMSNavigatorListener ... func navigatorWillPresentPrompt(_ navigator: GMSNavigator) { // Hide any sort of custom UI element. } func navigatorDidDismissPrompt(_ navigator: GMSNavigator) { // Show any sort of custom UI element. } ...
Objective-C
// Additional methods added to GMSNavigatorListener ... - (void)navigatorWillPresentPrompt:(GMSNavigator *)navigator { // Hide any sort of custom UI element. } - (void)navigatorDidDismissPrompt:(GMSNavigator *)navigator { // Show any sort of custom UI element. } ...