इस गाइड का इस्तेमाल करके, अपने ऐप्लिकेशन को अलग-अलग इवेंट सुनने और उनका जवाब देने की सुविधा चालू करें. ये इवेंट, उपयोगकर्ता के किसी रास्ते पर चलने के दौरान बदलते रहते हैं. इस गाइड में, किसी रास्ते को तय करने के बारे में नहीं बताया गया है. इसमें सिर्फ़ किसी रास्ते पर होने वाले इवेंट के बारे में बताया गया है.
खास जानकारी
iOS के लिए Navigation SDK टूल, आपको उपयोगकर्ता की जगह की जानकारी और रास्ते की स्थितियों से जुड़े लिसनर उपलब्ध कराता है. साथ ही, यह समय और दूरी से जुड़ा अहम डेटा भी उपलब्ध कराता है. मैप के व्यू कंट्रोलर पर, आपके ऐप्लिकेशन को इन लिसनर के लिए प्रोटोकॉल अपनाने होंगे:
GMSRoadSnappedLocationProviderListener
और
GMSNavigatorListener
.
इस सूची में, नेविगेशन इवेंट के लिए उपलब्ध लिसनर के तरीके दिखाए गए हैं:
GMSNavigatorListener.didArriveAtWaypoint
, यह इवेंट तब ट्रिगर होता है, जब कोई डेस्टिनेशन पहुंच जाता है.GMSNavigatorListener.navigatorDidChangeRoute
, जब रास्ते में बदलाव होता है, तब यह ट्रिगर होता है.GMSNavigatorListener.didUpdateRemainingTime
, अगले डेस्टिनेशन पर पहुंचने का समय बदलने पर, इसे बार-बार कॉल किया जाता है. ऐसा तब होता है, जब दिशा-निर्देश देने की सुविधा चालू होती है.GMSNavigatorListener.didUpdateRemainingDistance
, अगली मंज़िल की दूरी बदलने पर, इसे बार-बार कॉल किया जाता है. ऐसा तब होता है, जब दिशा-निर्देश देने की सुविधा चालू होती है.GMSNavigatorListener.didUpdateDelayCategory
, जब मार्गदर्शन चालू होता है, तब अगले डेस्टिनेशन पर पहुंचने में लगने वाले समय की कैटगरी में बदलाव होने पर इस फ़ंक्शन को कॉल किया जाता है.GMSNavigatorListener.didChangeSuggestedLightingMode
, यह इवेंट तब ट्रिगर होता है, जब रोशनी की अनुमानित स्थितियों को अपडेट किया जाता है. उदाहरण के लिए, जब उपयोगकर्ता की मौजूदा जगह पर रात होती है, तब रोशनी बदल जाती है.GMSNavigatorListener.didUpdateSpeedingPercentage
, यह तब ट्रिगर होता है, जब ड्राइवर तय की गई गति सीमा से ज़्यादा रफ़्तार में गाड़ी चला रहा हो.GMSRoadSnappedLocationProviderListener.didUpdateLocation
, उपयोगकर्ता की जगह की जानकारी बदलने पर, इसे बार-बार कॉल किया जाता है.
कोड देखना
ज़रूरी प्रोटोकॉल के मुताबिक काम करने का एलान करना
नेविगेशन के तरीकों को लागू करने से पहले, व्यू कंट्रोलर को इन प्रोटोकॉल को अपनाना होगा:
Swift
class ViewController: UIViewController, GMSNavigatorListener,
GMSRoadSnappedLocationProviderListener {
Objective-C
@interface ViewController () <GMSNavigatorListener,
GMSRoadSnappedLocationProviderListener>
@end
नेविगेशन प्रोटोकॉल अपनाने के बाद, व्यू कंट्रोलर के लिए लिसनर सेट करें. उदाहरण के लिए, viewDidLoad()
तरीके में यह कोड जोड़ा जा सकता है.
Swift
mapView.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 startUpdatingLocation];
नीचे दिया गया कोड, एक GMSRoadSnappedLocationProviderListener
बनाता है. यह didUpdateLocation
इवेंट को हैंडल करता है.
Swift
func locationProvider(_ locationProvider: GMSRoadSnappedLocationProvider,
didUpdate location: CLLocation) { print("Location: \(location.description)") }
Objective-C
- (void)locationProvider:(GMSRoadSnappedLocationProvider *)locationProvider
didUpdateLocation:(CLLocation *)location { NSLog(@"Location: %@",
location.description); }
जब ऐप्लिकेशन बैकग्राउंड में चल रहा हो, तब जगह की जानकारी के अपडेट पाने के लिए, allowsBackgroundLocationUpdates
को सही पर सेट करें:
Swift
mapView.roadSnappedLocationProvider.allowsBackgroundLocationUpdates = true
Objective-C
_mapView.roadSnappedLocationProvider.allowsBackgroundLocationUpdates = YES;
पहुंचने से जुड़े इवेंट का पता लगाना
आपका ऐप्लिकेशन, didArriveAtWaypoint
इवेंट का इस्तेमाल करके यह पता लगाता है कि कोई डेस्टिनेशन कब पहुंचा गया. continueToNextDestination()
पर कॉल करके, निर्देशों को फिर से शुरू किया जा सकता है और अगले वेपॉइंट पर जाया जा सकता है. इसके बाद, निर्देशों को फिर से चालू करें. आपके ऐप्लिकेशन को continueToNextDestination()
पर कॉल करने के बाद, दिशा-निर्देशों को फिर से चालू करना होगा.
ऐप्लिकेशन के continueToNextDestination
को कॉल करने के बाद, नेविगेटर के पास पिछली मंज़िल के बारे में कोई डेटा नहीं होता. अगर आपको किसी रूट लेग के बारे में जानकारी का विश्लेषण करना है, तो आपको continueToNextDestination()
को कॉल करने से पहले, नेविगेटर से यह जानकारी वापस लानी होगी.
यहां दिए गए कोड के उदाहरण में, didArriveAtWaypoint
इवेंट को मैनेज करने का तरीका बताया गया है:
Swift
func navigator(_ navigator: GMSNavigator, didArriveAt waypoint:
GMSNavigationWaypoint) { print("You have arrived at: \(waypoint.title)")
mapView.navigator?.continueToNextDestination()
mapView.navigator?.isGuidanceActive = true }
Objective-C
- (void)navigator:(GMSNavigator *)navigator
didArriveAtWaypoint:(GMSNavigationWaypoint *)waypoint { NSLog(@"You have
arrived at: %@", waypoint.title); [_mapView.navigator
continueToNextDestination]; _mapView.navigator.guidanceActive = YES; }
रास्ते में बदलाव होने पर अपडेट पाना
रास्ता बदलने पर सूचना पाने के लिए, navigatorDidChangeRoute
इवेंट को मैनेज करने का तरीका बनाएं. GMSNavigator
की routeLegs
और currentRouteLeg
प्रॉपर्टी का इस्तेमाल करके, नए रूट को ऐक्सेस किया जा सकता है.
Swift
func navigatorDidChangeRoute(_ navigator: GMSNavigator) { print("The route has
changed.") }
Objective-C
- (void)navigatorDidChangeRoute:(GMSNavigator *)navigator { NSLog(@"The route
has changed."); }
मंज़िल पर पहुंचने के समय से जुड़े अपडेट पाने की सुविधा
मंज़िल तक पहुंचने में लगने वाले समय के बारे में लगातार अपडेट पाने के लिए, didUpdateRemainingTime
इवेंट को हैंडल करने का तरीका बनाएं. time
पैरामीटर, अगले डेस्टिनेशन तक पहुंचने का अनुमानित समय उपलब्ध कराता है. यह समय सेकंड में होता है.
Swift
func navigator(_ navigator: GMSNavigator, didUpdateRemainingTime time:
TimeInterval) { print("Time to next destination: \(time)") }
Objective-C
- (void)navigator:(GMSNavigator *)navigator
didUpdateRemainingTime:(NSTimeInterval)time { NSLog(@"Time to next
destination: %f", time); }
अगले डेस्टिनेशन पर पहुंचने के अनुमानित समय में कम से कम बदलाव सेट करने के लिए, GMSNavigator
पर timeUpdateThreshold
प्रॉपर्टी सेट करें. इसकी वैल्यू सेकंड में दी जाती है. अगर यह प्रॉपर्टी सेट नहीं की जाती है, तो सेवाएं एक सेकंड की डिफ़ॉल्ट वैल्यू का इस्तेमाल करती हैं.
Swift
navigator?.timeUpdateThreshold = 10
Objective-C
navigator.timeUpdateThreshold = 10;
मंज़िल की दूरी के अपडेट पाना
मंज़िल की दूरी से जुड़े अपडेट लगातार पाने के लिए, didUpdateRemainingDistance
इवेंट को हैंडल करने का एक तरीका बनाएं. distance
पैरामीटर, अगली मंज़िल की अनुमानित दूरी मीटर में दिखाता है.
Swift
func navigator(_ navigator: GMSNavigator, didUpdateRemainingDistance distance:
CLLocationDistance) { let miles = distance * 0.00062137 print("Distance to next
destination: \(miles) miles.") }
Objective-C
- (void)navigator:(GMSNavigator *)navigator
didUpdateRemainingDistance:(CLLocationDistance)distance { double miles =
distance * 0.00062137; NSLog(@"%@", [NSString stringWithFormat:@"Distance to
next destination: %.2f.", miles]); }
अगली मंज़िल की अनुमानित दूरी में कम से कम बदलाव सेट करने के लिए, GMSNavigator
पर distanceUpdateThreshold
प्रॉपर्टी सेट करें. वैल्यू मीटर में दी जाती है. अगर यह प्रॉपर्टी सेट नहीं की जाती है, तो सेवाएं एक मीटर की डिफ़ॉल्ट वैल्यू का इस्तेमाल करती हैं.
Swift
navigator?.distanceUpdateThreshold = 100
Objective-C
navigator.distanceUpdateThreshold = 100;
ट्रैफ़िक की जानकारी पाना
बचे हुए रास्ते के लिए ट्रैफ़िक की जानकारी के अपडेट पाने के लिए, didUpdateDelayCategory
इवेंट को हैंडल करने का तरीका बनाएं. delayCategoryToNextDestination
को कॉल करने पर GMSNavigationDelayCategory
मिलता है. यह 0 से 3 तक की वैल्यू देता है. कैटगरी में अपडेट, ऐप्लिकेशन इस्तेमाल करने वाले व्यक्ति की मौजूदा जगह के हिसाब से किए जाते हैं. अगर ट्रैफ़िक डेटा उपलब्ध नहीं है, तो GMSNavigationDelayCategory
0 दिखाता है. संख्याएं 1 से 3 तक, हल्के से भारी फ़्लो को दिखाती हैं.
Swift
func navigator(_ navigator: GMSNavigator, didUpdate delayCategory:
GMSNavigationDelayCategory) { print("Traffic flow to next destination:
\(delayCategory)") }
Objective-C
- (void)navigator:(GMSNavigator *)navigator
didUpdateDelayCategory:(GMSNavigationDelayCategory)delayCategory {
NSLog(@"Traffic flow to next destination: %ld", (long)delayCategory); }
GMSNavigationDelayCategory
प्रॉपर्टी में, देरी के ये लेवल दिखते हैं:
देरी की कैटगरी | ब्यौरा |
---|---|
GMSNavigationDelayCategoryNoData | 0 - उपलब्ध नहीं है, ट्रैफ़िक या के लिए कोई डेटा नहीं है : |
रास्ते की जानकारी. | |
GMSNavigationDelayCategoryHeavy | 1 - हैवी. |
GMSNavigationDelayCategoryMedium | 2 - मीडियम. |
GMSNavigationDelayCategoryLight | 3 - लाइट. |
तेज़ गति से गाड़ी चलाने के बारे में अपडेट पाना
जब कोई ड्राइवर तय की गई स्पीड लिमिट से ज़्यादा स्पीड पर गाड़ी चला रहा हो, तब अपडेट पाने के लिए, didUpdateSpeedingPercentage
इवेंट को मैनेज करने का एक तरीका बनाएं.
Swift
// Listener to handle speeding events. func navigator( _ navigator:
GMSNavigator, didUpdateSpeedingPercentage percentageAboveLimit: CGFloat ) {
print("Speed is \(percentageAboveLimit) above the limit.") }
Objective-C
// Listener to handle speeding events. - (void)navigator:(GMSNavigator
*)navigator didUpdateSpeedingPercentage:(CGFloat)percentageAboveLimit {
NSLog(@"Speed is %f percent above the limit.", percentageAboveLimit); }
सुझाए गए लाइटिंग मोड को बदलना
रोशनी में होने वाले अनुमानित बदलावों के बारे में अपडेट पाने के लिए, didChangeSuggestedLightingMode
इवेंट को हैंडल करने का तरीका बनाएं.
Swift
// Define a listener for suggested changes to lighting mode. func navigator(_
navigator: GMSNavigator, didChangeSuggestedLightingMode lightingMode:
GMSNavigationLightingMode) { print("Suggested lighting mode has changed:
\(String(describing: lightingMode))")
// Make the suggested change. mapView.lightingMode = lightingMode }
Objective-C
// Define a listener for suggested changes to lighting mode.
-(void)navigator:(GMSNavigator *)navigator didChangeSuggestedLightingMode:
(GMSNavigationLightingMode)lightingMode { NSLog(@"Suggested lighting mode has
changed: %ld", (long)lightingMode);
// Make the suggested change. _mapView.lightingMode = lightingMode; }