नेविगेशन इवेंट के लिए सुनें

इस गाइड का इस्तेमाल करके अपने ऐप्लिकेशन को कई तरह के इवेंट को सुनने और उनके जवाब देने की सुविधा दें. ये इवेंट, उपयोगकर्ता के रास्ते में नेविगेट करने पर बदल जाते हैं. इस गाइड में रूट के बारे में नहीं बताया गया है. इसमें सिर्फ़ रास्ते के इवेंट के बारे में जानकारी दी गई है.

खास जानकारी

iOS के लिए नेविगेशन SDK टूल से, आपको रास्ते के साथ-साथ उपयोगकर्ता की जगह और शर्तों की जानकारी के साथ-साथ समय और दूरी से जुड़े ज़रूरी डेटा के बारे में जानने में मदद मिलती है. मैप के व्यू कंट्रोलर पर, आपके ऐप्लिकेशन को इन लिसनर के लिए प्रोटोकॉल का पालन करना होगा: GMSRoadSnappedLocationProviderListener और GMSNavigatorListener.

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

  • GMSNavigatorListener.didArriveAtWaypoint, तब ट्रिगर होता है, जब कोई डेस्टिनेशन पहुंच जाता है.
  • GMSNavigatorListener.navigatorDidChangeRoute, यह तब ट्रिगर होता है, जब रास्ते में बदलाव होता है.
  • GMSNavigatorListener.didUpdateRemainingTime को बार-बार अगले डेस्टिनेशन का समय बदलने पर कहा जाता है. साथ ही, दिशा-निर्देश चालू रहते हैं.
  • GMSNavigatorListener.didUpdateRemainingDistance को बार-बार अगली मंज़िल की दूरी बदलने के लिए कहा जाता है. वहीं, दिशा-निर्देश चालू रहते हैं.
  • GMSNavigatorListener.didUpdateDelayCategory, इसे तब कहा जाता है, जब अगली डेस्टिनेशन की देरी वाली कैटगरी बदल जाती है और दिशा-निर्देश चालू होते हैं.
  • GMSNavigatorListener.didChangeSuggestedLightingMode, यह तब ट्रिगर होता है, जब रोशनी की अनुमानित स्थिति अपडेट होती है. उदाहरण के लिए, जब रात उपयोगकर्ता की मौजूदा जगह पर होती है, तब रोशनी में बदलाव होता है.
  • GMSNavigatorListener.didUpdateSpeedingPercentage, यह तब ट्रिगर होता है, जब ड्राइवर की गति सीमा से ज़्यादा हो जाती है.
  • GMSRoadSnappedLocationProviderListener.didUpdateLocation, को उपयोगकर्ता की जगह की जानकारी बदलने पर बार-बार कॉल किया जाता है.

कोड देखें

ज़रूरी प्रोटोकॉल के पालन का एलान करना

नेविगेशन के तरीकों को लागू करने से पहले, व्यू कंट्रोलर को प्रोटोकॉल अपनाने होंगे:

Swift

क्लास ViewController: UIViewController, GMSNavigatorListener, GMSRoadSnappedLocationProviderListener {

Objective-C

@interface ViewController () <gmsnavigatorlistener, gmsroadsSnappedlocationproviderlistener=""></gmsnavigatorlistener,>

@आखिर

नेविगेशन प्रोटोकॉल अपनाने के बाद, लिसनर को व्यू कंट्रोलर पर सेट करें. उदाहरण के लिए, viewDidLoad() तरीके में यह कोड जोड़ा जा सकता है.

Swift

MapsView.navigator?.add(self)mapView.roadSnappedLocationProvider?.add(self)

Objective-C

[_mapView.navigator addListener:self]; [_mapView.roadSnappedLocationProvider addListener:self];

जगह की जानकारी के अपडेट पाना या उन्हें रोकना

मैप पर उपयोगकर्ता की प्रगति दिखाने के लिए स्थान अपडेट आवश्यक हैं.

location इंस्टेंस में इन प्रॉपर्टी की जानकारी मिलती है:

जगह की जानकारी ब्यौरा
ऐल्टीट्यूड मौजूदा ऊंचाई.
coordinate.latitude सड़क से स्नैप किए गए अक्षांश का मौजूदा निर्देशांक.
coordinate.longitude सड़क से स्नैप किए गए देशांतर का मौजूदा निर्देशांक.
कोर्स मौजूदा बेयरिंग डिग्री में.
शारीरिक गतिविधि की स्पीड का डेटा मौजूदा स्पीड.
timestamp मौजूदा रीडिंग की तारीख/समय.

जगह की जानकारी से जुड़े अपडेट लगातार पाने के लिए, mapView.roadSnappedLocationProvider.startUpdatingLocation को कॉल करें और didUpdateLocation इवेंट को मैनेज करने के लिए GMSRoadSnappedLocationProviderListener का इस्तेमाल करें.

नीचे दिए गए उदाहरण में, startUpdatingLocation को कॉल करने के बारे में बताया गया है:

Swift

mapView.roadSnappedLocationProvider.startUpdatingLocation()

Objective-C

[_mapView.roadSnappedLocationProvider शुरुआत अपडेट करने की जगह];

यह कोड एक GMSRoadSnappedLocationProviderListener बनाता है, जो didUpdateLocation इवेंट को मैनेज करता है.

Swift

Fuc locationProvider(_ locationProvider: GMSRoadSnappedLocationProvider, didUpdate स्थान: CLLocation) { प्रिंट("Location: (location.description)") }

Objective-C

  • (void)locationProvider:(GMSRoadSnappedLocationProvider *)locationProvider didUpdateLocation:(CLLocation *)location { NSLog(@"Location: %@", location.description); }

ऐप्लिकेशन के बैकग्राउंड में चलने पर जगह की जानकारी के अपडेट पाने के लिए, allowsBackgroundLocationUpdates को 'सही है' पर सेट करें:

Swift

MapsView.roadSnappedLocationProvider.allowsbackgroundLocationUpdate = true

Objective-C

_mapView.roadSnappedLocationProvider.allowsbackgroundLocationUpdate = हां;

पहुंचने के इवेंट का पता लगाया जा रहा है

आपका ऐप्लिकेशन didArriveAtWaypoint इवेंट का इस्तेमाल यह पता लगाने के लिए करता है कि डेस्टिनेशन पर कब पहुंचा गया. continueToNextDestination() पर कॉल करके, दिशा-निर्देशों को फिर से शुरू किया जा सकता है और अगले वेपॉइंट पर जाया जा सकता है. इसके बाद, दिशा-निर्देशों को फिर से चालू करें. continueToNextDestination() को कॉल करने के बाद, आपके ऐप्लिकेशन को दिशा-निर्देश फिर से चालू करने होंगे.

ऐप्लिकेशन continueToNextDestination को कॉल करने के बाद, नेविगेटर के पास पिछले डेस्टिनेशन का डेटा नहीं रहता. अगर आपको किसी रास्ते की जानकारी का विश्लेषण करना है, तो continueToNextDestination() पर कॉल करने से पहले, आपको इसे नेविगेटर से वापस लाना होगा.

कोड के इस उदाहरण में, didArriveAtWaypoint इवेंट को मैनेज करने का तरीका बताया गया है:

Swift

Fuc navgator(_ navgator: GMSNavigator, did कि॰मी॰At Wapoint: GMSनेविगेशनWaypoint) { प्रिंट("You have sent to: (waypoint.title)") mapView.navigator?.continueToNextDestination() mapView.navigator?.is वोट की सुविधा = true }

Objective-C

  • (void)navgator:(GMSNavigator *)navigator didबदलAtWaypoint:(GMSnavigationWaypoint *)waypoint { NSLog(@"आप इस समय पहुंच गए हैं: %@", Wapoint.title); [_mapView.navigator continueToNextDestination]; _mapView.navigator.guidanceActive = YES; }

रास्ते में बदलाव के अपडेट मिल रहे हैं

रूट बदलने पर सूचना पाने के लिए, navigatorDidChangeRoute इवेंट को मैनेज करने का तरीका बनाएं. GMSNavigator की routeLegs और currentRouteLeg प्रॉपर्टी का इस्तेमाल करके, नए रूट को ऐक्सेस किया जा सकता है.

Swift

Fuc navgator बेडChangeRoute(_ navgator: GMSNavigator) { प्रिंट("रूट बदल गया है.") }

Objective-C

  • (void)navgator बेडचेंजर:(GMSNavigator *)navigator { NSLog(@"The रूट बदल गया है."); }

डेस्टिनेशन के अपडेट मिलने में लगने वाला समय

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

Swift

Fuc navgator(_ navgator: GMSNavigator, didUpdateRemainingTime time: TimeInterval) { प्रिंट("अगले डेस्टिनेशन का समय: (समय)") }

Objective-C

  • (void)navigator:(GMSNavigator *)navgator didUpdateRemainingTime:(NSTimeInterval)समय { NSLog(@"अगले डेस्टिनेशन का समय %f", समय); }

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

Swift

navgator?.timeUpdateThreshold = 10 पर

Objective-C

navigator.timeUpdateThreshold = 10;

मंज़िल के अपडेट की दूरी मिल रही है

डेस्टिनेशन से जुड़े अपडेट के लिए लगातार दूरी पाने के लिए, didUpdateRemainingDistance इवेंट को मैनेज करने का एक तरीका बनाएं. distance पैरामीटर अगली मंज़िल तक दूरी की अनुमानित दूरी मीटर में दिखाता है.

Swift

Fuc navgator(_ navgator: GMSNavigator, didUpdateRemainingDestination दूरी: CLLocationदूर) {जैसे मील = दूरी * 0.00062137 प्रिंट("अगले डेस्टिनेशन की दूरी: (मील) मील.") }

Objective-C

  • {0/}

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

Swift

नेविगेटर?.distanceUpdateThreshold = 100

Objective-C

navgator.distanceUpdateThreshold = 100;

ट्रैफ़िक के बारे में अपडेट पाना

बाकी रास्ते के लिए ट्रैफ़िक फ़्लो के लगातार अपडेट पाने के लिए, didUpdateDelayCategory इवेंट को मैनेज करने का एक तरीका बनाएं. delayCategoryToNextDestination को किए जाने वाले कॉल से GMSNavigationDelayCategory मिलता है, जो 0 से 3 तक की वैल्यू देता है. श्रेणी में किए जाने वाले अपडेट, ऐप्लिकेशन के उपयोगकर्ता की मौजूदा स्थिति पर आधारित होते हैं. अगर ट्रैफ़िक डेटा उपलब्ध नहीं है, तो GMSNavigationDelayCategory 0 दिखाता है. 1-3 संख्या, प्रकाश से भारी फ़्लो की दिशा को दिखती है.

Swift

Fuc navigator(_ navgator: GMSNavigator, DidUpdate बकायाCategory: GMSnavigationDelayCategory) { प्रिंट("ट्रैफ़िक फ़्लो की अगली मंज़िल: (delayCategory)") }

Objective-C

  • (void)navgator:(GMSNavigator *)navgator didUpdateDelayCategory:(GMSnavigationDelayCategory)delayCategory { NSLog(@"Traffic flow to Next डेस्टिनेशन: %ld", (long)delayCategory); }

GMSNavigationDelayCategory प्रॉपर्टी में इन देरी के लेवल की जानकारी होती है:

देरी की कैटगरी ब्यौरा
GMSNavigationDelayCategoryNoData 0 - उपलब्ध नहीं है, ट्रैफ़िक का कोई डेटा नहीं है या :
CANNOT TRANSLATE
GMSNavigationDelayCategoryHeavy 1 - बहुत ज़्यादा.
GMSNavigationDelayCategoryMedium 2 - सामान्य.
GMSNavigationDelayCategoryLight 3 - हल्का.

तेज़ी से काम करने वाले अपडेट मिल रहे हैं

ड्राइवर की स्पीड सीमा से ज़्यादा होने पर अपडेट पाने के लिए, didUpdateSpeedingPercentage इवेंट को मैनेज करने का तरीका बनाएं.

Swift

// तेज़ी से होने वाले इवेंट को हैंडल करने वाला लिसनर. फ़ंक नेविगेशनेटर( _ navgator: GMSNavigator, didUpdateSpeedingPercentagePercentAboveLimit: CGFloat ) { प्रिंट("स्पीड (percentageAboveLimit) सीमा से ज़्यादा है.") }

Objective-C

// तेज़ रफ़्तार वाले इवेंट को हैंडल करने के लिए आइडेंटिफ़ायर. - (void)navigator:(GMSNavigator *)navgator didUpdateSpeedingPercentage:(CGFloat)percentageAboveLimit { NSLog(@"स्पीड सीमा से %f प्रतिशत ज़्यादा है.", पर्सेंटाइलAboveLimit); }

सुझाई गई लाइटिंग मोड को बदलना

रोशनी में होने वाले अनुमानित बदलावों के बारे में अपडेट पाने के लिए, didChangeSuggestedLightingMode इवेंट को मैनेज करने का एक तरीका बनाएं.

Swift

// लाइटिंग मोड में सुझाए गए बदलावों के लिए लिसनर तय करें. Fuc navgator(_ navgator: GMSNavigator, didChangeSuggestedLightingMode LightMode: GMSनेविगेशनLightingMode) { प्रिंट("सुझाया गया लाइटिंग मोड बदल गया है: (स्ट्रिंग(डीक्रेनिंग: लाइटिंगमोड)))")

// सुझाया गया बदलाव करें. mapView.lightingMode = LightMode }

Objective-C

// लाइटिंग मोड में सुझाए गए बदलावों के लिए, लिसनर तय करें. -(void)navgator:(GMSNavigator *)navigator didChange suggestedLightingMode: (GMSnavigationLightingMode)lightingMode { NSLog(@"सुझाया गया लाइटिंग मोड बदल गया है: %ld", (long)lightingMode);

// सुझाया गया बदलाव करें. _mapView.lightingMode = LightMode; }