इस पेज पर, कस्टम नेविगेशन अनुभव के तहत, अपनी पसंद के मुताबिक निर्देश बनाने के लिए अपनाई जाने वाली प्रोसेस के बारे में बताया गया है as part of a custom navigation experience.
यह प्रोसेस, किसी रूट पर नेविगेट करने की प्रोसेस से अलग है. इसके बारे में यहां बताया गया है:
- सबसे पहले, नेविगेशन सेशन को अलग से सेट अप करें. इसके बाद, व्यू कंट्रोलर को कॉल करने के बजाय, सेशन के ज़रिए नेविगेटर इंस्टेंस पाएं.
- नेविगेशन इवेंट के जवाब देने और उन्हें मैनेज करने के लिए, इवेंट लिसनर सेट अप करें.
नेविगेशन सेशन बनाएं. इसके लिए,
GMSNavigationService.createNavigationSessionका इस्तेमाल करें. इसके बाद,setDestinationकॉल करके नेविगेशन शुरू करें. Google के नेविगेशन अनुभव में, नेविगेशन मैप व्यू के ज़रिए नेविगेटर को कॉल किया जाता है. वहीं,GMSNavigationServices, यूज़र इंटरफ़ेस (यूआई) इंस्टेंस से अलग नेविगेशन सेशन से इवेंट की स्ट्रीम को कंट्रोल और रिसीव करता है. इसका मतलब है कि यह यूज़र इंटरफ़ेस (यूआई) के बिना भी काम कर सकता है या इसे किसी भी यूज़र इंटरफ़ेस (यूआई) पर आधारित अनुभव के लिए पास किया जा सकता है. इस तरीके से, नेविगेशन सेशन आपके ऐप्लिकेशन में तब तक चलता रहता है, जब तक उससे आखिरी रेफ़रंस नहीं हटा दिया जाता.सड़क पर सटीक जगह की जानकारी देने वाला लोकेशन प्रोवाइडर सेट अप करें. अगर आपको अपने ऐप्लिकेशन में लगातार जगह की जानकारी की निगरानी करनी है, तो लोकेशन प्रोवाइडर का इस्तेमाल करें. जैसे, रूट के साथ नीले रंग का डॉट दिखाने वाला नेविगेशन व्यू दिखाने के लिए.
GMSNavigatorListenerप्रोटोकॉल लागू करके, बारी-बारी से दिशा-निर्देशों की ज़्यादा जानकारी के लिए लिसनर सेट अप करें. इसके बाद, उस जानकारी को अपने कस्टम नेविगेशन अनुभव के हिसाब से बदलें. उदाहरण के लिए:- दिशा-निर्देशों को आसानी से स्क्रीनकास्ट करने के लिए, सिर्फ़ टेक्स्ट वाले फ़ील्ड लागू करें.
- अपने यूज़र इंटरफ़ेस (यूआई) के लिए फ़ील्ड डिज़ाइन करें और उनमें जानकारी भरें.
नेविगेशन सिम्युलेटर सेट अप करें. यह डेवलपमेंट और टेस्टिंग के लिए ज़रूरी है.
अलग से नेविगेशन सेशन बनाना
डेमो में दिया गया यह कोड स्निपेट दिखाता है कि व्यू कंट्रोलर से अलग नेविगेशन कैसे सेट अप किया जाता है. इसके बाद, कोड एक ओवरव्यू मैप जोड़ता है. इसे मौजूदा सड़क पर सटीक जगह की जानकारी दिखाने के लिए कॉन्फ़िगर किया जाता है.
// Create the navigation session.
_navigationSession = [GMSNavigationServices createNavigationSession];
GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =
_navigationSession.roadSnappedLocationProvider;
[roadSnappedLocationProvider startUpdatingLocation];
GMSNavigator *navigator = _navigationSession.navigator;
[navigator addListener:self];
navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;
navigator.sendsBackgroundNotifications = NO;
_navigationSession.started = YES;
[navigator setDestinations:@[ destination ]
callback:^(GMSRouteStatus routeStatus) {
// …handle changes in route status.
}];
// Add an overview map.
_mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
[self.mainStackView addArrangedSubview:_mapView];
[self.mainStackView setNeedsLayout];
_mapView.settings.compassButton = YES;
_mapView.delegate = self;
_mapView.myLocationEnabled = YES;
_mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;
कस्टम अनुभव से Google के अनुभव में नेविगेशन पास करना
इस कोड स्निपेट से पता चलता है कि आपका ऐप्लिकेशन, उपयोगकर्ता को कस्टम नेविगेशन अनुभव से Google के नेविगेशन अनुभव में कैसे ले जा सकता है. इस कोड स्निपेट से यह भी पता चलता है कि आपका ऐप्लिकेशन, मैप शेयर करते समय यह ट्रांज़िशन कैसे करता है.
`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];
[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];
`…`
[`_mapView enableNavigationWithSession:_navigationSession`];