iOS के लिए Navigation SDK का इस्तेमाल करके, अपने ऐप्लिकेशन में किसी एक जगह का रास्ता दिखाने के लिए, इस गाइड को पढ़ें.
खास जानकारी
- अपना प्रोजेक्ट सेट अप करें सेक्शन में दिए गए निर्देशों के मुताबिक, Navigation SDK को अपने ऐप्लिकेशन में इंटिग्रेट करें.
GMSMapViewको कॉन्फ़िगर करें.- उपयोगकर्ता को नियम और शर्तें स्वीकार करने के लिए कहें. साथ ही, उसे जगह की जानकारी देने वाली सेवाओं और बैकग्राउंड में सूचनाएं पाने की अनुमति देने के लिए कहें.
- एक ऐसी सरणी बनाएं जिसमें एक या उससे ज़्यादा डेस्टिनेशन हों.
मोड़-दर-मोड़ नेविगेशन को कंट्रोल करने के लिए,
GMSNavigatorतय करें.setDestinationsका इस्तेमाल करके डेस्टिनेशन जोड़ें.- नेविगेशन शुरू करने के लिए,
isGuidanceActiveकोtrueपर सेट करें. simulateLocationsAlongExistingRouteका इस्तेमाल करके, वाहन के रास्ते में आगे बढ़ने की प्रोसेस को सिम्युलेट करें. इससे, ऐप्लिकेशन की जांच करने, डीबग करने, और उसे दिखाने में मदद मिलती है.
कोड देखना
उपयोगकर्ता को ज़रूरी अनुमतियों के लिए प्रॉम्प्ट करना
Navigation SDK का इस्तेमाल करने से पहले, उपयोगकर्ता को नियम और शर्तों से सहमत होना चाहिए. साथ ही, उसे जगह की जानकारी देने वाली सेवाओं के इस्तेमाल की अनुमति देनी चाहिए. नेविगेशन के लिए यह ज़रूरी है. अगर आपका ऐप्लिकेशन बैकग्राउंड में चलेगा, तो उसे उपयोगकर्ता से मार्गदर्शन से जुड़ी सूचनाओं को अनुमति देने के लिए भी कहना होगा. इस सेक्शन में, ज़रूरी अनुमति के लिए प्रॉम्प्ट दिखाने का तरीका बताया गया है.
जगह की जानकारी की सेवाओं को अनुमति देना
Navigation SDK, जगह की जानकारी देने वाली सेवाओं का इस्तेमाल करता है. इसके लिए, उपयोगकर्ता की अनुमति ज़रूरी होती है. जगह की जानकारी से जुड़ी सेवाएं चालू करने और अनुमति वाला डायलॉग बॉक्स दिखाने के लिए, यह तरीका अपनाएं:
Xcode में, जगह की जानकारी और बैकग्राउंड में काम करने की सुविधाओं को चालू करें:
- Xcode में अपना टारगेट खोलें और Signing & Capabilities टैब चुनें. ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन में सुविधाएं जोड़ने के बारे में Apple की गाइड देखें.
- जगह की जानकारी (हमेशा) और जगह की जानकारी (इस्तेमाल के दौरान) की सुविधाएं जोड़ें. हर टेक्स्ट फ़ील्ड में, कम शब्दों में यह बताएं कि आपके ऐप्लिकेशन को जगह की जानकारी देने वाली सेवाओं की ज़रूरत क्यों है. उदाहरण के लिए: "इस ऐप्लिकेशन को, बारी-बारी से नेविगेशन के लिए जगह की जानकारी देने वाली सेवाओं का इस्तेमाल करने की अनुमति चाहिए."
- Background Modes सुविधा जोड़ें. इसके बाद, Location updates चेकबॉक्स को चुनें. इस सुविधा के बिना, नेविगेशन शुरू करते समय ऐप्लिकेशन क्रैश हो जाता है. ज़्यादा जानकारी के लिए, Apple की बैकग्राउंड में जगह की जानकारी के अपडेट मैनेज करने से जुड़ी गाइड देखें.
अनुमति वाला डायलॉग बॉक्स दिखाने के लिए, लोकेशन मैनेजर इंस्टेंस के
requestAlwaysAuthorization()तरीके को कॉल करें.
Swift
self.locationManager.requestAlwaysAuthorization()
Objective-C
[_locationManager requestAlwaysAuthorization];
जगह की जानकारी की सेवा के लिए अनुमति देने से जुड़े Apple के सभी दस्तावेज़ देखें.
बैकग्राउंड में सलाह देने के लिए, सूचनाएं पाने की अनुमति देना
जब ऐप्लिकेशन बैकग्राउंड में चल रहा हो, तब सूचनाएं दिखाने के लिए Navigation SDK को उपयोगकर्ता की अनुमति चाहिए. उपयोगकर्ता को ये सूचनाएं दिखाने की अनुमति मांगने के लिए, यह कोड जोड़ें:
Swift
UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) {
granted, error in
// Handle denied authorization to display notifications.
if !granted || error != nil {
print("User rejected request to display notifications.")
}
}
Objective-C
// Request authorization for alert notifications.
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
UNAuthorizationOptions options = UNAuthorizationOptionAlert;
[center requestAuthorizationWithOptions:options
completionHandler:
^(
BOOL granted,
NSError *_Nullable error) {
if (!error && granted) {
NSLog(@"iOS Notification Permission: newly Granted");
} else {
NSLog(@"iOS Notification Permission: Failed or Denied");
}
}];
मोशन सेंसर इस्तेमाल करने की अनुमति देना
आने वाली मुख्य रिलीज़ में, iOS के लिए Navigation SDK टूल, रूट की ऊंचाई का हिसाब लगाने के लिए, डिवाइस के मोशन सेंसर (CMAltimeter) के साथ-साथ जगह की जानकारी के मुख्य डेटा का इस्तेमाल करता है. जब SDK, ऐल्टीमीटर को ऐक्सेस करता है, तो iOS इस स्ट्रिंग का इस्तेमाल करके उपयोगकर्ता को अनुमति के लिए प्रॉम्प्ट करता है.
इस कुंजी को जोड़ने से, मौजूदा व्यवहार पर कोई असर नहीं पड़ता. हालांकि, बाद में SDK टूल को अपग्रेड करने पर, यह कुंजी इनिशियलाइज़ेशन क्रैश को रोकती है.
SDK टूल के आने वाले समय में होने वाले अपग्रेड के लिए, मोशन सेंसर के लिए अनुमतियां इस तरह कॉन्फ़िगर करें:
Xcode में अपना टारगेट खोलें और जानकारी टैब पर जाएं. इसके अलावा, अपनी
Info.plistफ़ाइल खोलें.नई कुंजी जोड़ें: Privacy - Motion Usage Description (
NSMotionUsageDescription).उपयोगकर्ता के लिए कम शब्दों में जानकारी जोड़ें. उदाहरण के लिए: "इस ऐप्लिकेशन को ऊंचाई का पता लगाने और मैप रूटिंग की सटीकता को बेहतर बनाने के लिए, मोशन सेंसर के ऐक्सेस की ज़रूरत होती है."
नियम और शर्तें स्वीकार करें
नियम और शर्तों वाला डायलॉग बॉक्स दिखाने के लिए, इस कोड का इस्तेमाल करें. साथ ही, जब उपयोगकर्ता नियमों को स्वीकार कर ले, तब नेविगेशन चालू करें. ध्यान दें कि इस उदाहरण में, जगह की जानकारी देने वाली सेवाओं और दिशा-निर्देशों से जुड़ी सूचनाओं के लिए कोड शामिल है. यह कोड पहले दिखाया गया था.
Swift
let termsAndConditionsOptions = GMSNavigationTermsAndConditionsOptions(companyName: "Ride Sharing Co.")
GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(
with: termsAndConditionsOptions) { termsAccepted in
if termsAccepted {
// Enable navigation if the user accepts the terms.
self.mapView.isNavigationEnabled = true
self.mapView.settings.compassButton = true
// Request authorization to use location services.
self.locationManager.requestAlwaysAuthorization()
// Request authorization for alert notifications which deliver guidance instructions
// in the background.
UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) {
granted, error in
// Handle rejection of notification authorization.
if !granted || error != nil {
print("Authorization to deliver notifications was rejected.")
}
}
} else {
// Handle rejection of terms and conditions.
}
}
Objective-C
GMSNavigationTermsAndConditionsOptions *termsAndConditionsOptions = [[GMSNavigationTermsAndConditionsOptions alloc] initWithCompanyName:@"Ride Sharing Co."];
[GMSNavigationServices
showTermsAndConditionsDialogIfNeededWithOptions:termsAndConditionsOptions
callback:^(BOOL termsAccepted) {
if (termsAccepted) {
// Enable navigation if the user accepts the terms.
_mapView.navigationEnabled = YES;
_mapView.settings.compassButton = YES;
// Request authorization to use the current device location.
[_locationManager requestAlwaysAuthorization];
// Request authorization for alert notifications which deliver guidance instructions
// in the background.
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
UNAuthorizationOptions options = UNAuthorizationOptionAlert;
[center requestAuthorizationWithOptions:options
completionHandler:
^(
BOOL granted,
NSError *_Nullable error) {
if (!error && granted) {
NSLog(@"iOS Notification Permission: newly Granted");
} else {
NSLog(@"iOS Notification Permission: Failed or Denied");
}
}];
} else {
// Handle rejection of the terms and conditions.
}
}];
रास्ता बनाना और दिशा-निर्देश पाना
कोई रास्ता बनाने के लिए, नेविगेटर के setDestinations तरीके को कॉल करें. इसमें एक या उससे ज़्यादा GMSNavigationWaypoint डेस्टिनेशन का ऐरे शामिल करें. अगर रूट की जानकारी मिल जाती है, तो वह मैप पर दिखती है. रास्ते के बारे में निर्देश पाने के लिए, कॉलबैक में isGuidanceActive को true पर सेट करें.
यहां दिए गए उदाहरण में यह दिखाया गया है कि:
- एक डेस्टिनेशन वाला नया रूट बनाना.
- निर्देश शुरू किए जा रहे हैं.
- बैकग्राउंड में दिशा-निर्देश पाने की सुविधा से जुड़ी सूचनाएं पाने की सुविधा चालू करना.
- रास्ते के हिसाब से यात्रा का सिम्युलेशन (ज़रूरी नहीं).
- कैमरे के मोड को "फ़ॉलो करें" पर सेट करना (ज़रूरी नहीं है).
Swift
func startNav() {
var destinations = [GMSNavigationWaypoint]()
destinations.append(GMSNavigationWaypoint.init(placeID: "ChIJnUYTpNASkFQR_gSty5kyoUk",
title: "PCC Natural Market")!)
mapView.navigator?.setDestinations(destinations) { routeStatus in
self.mapView.navigator?.isGuidanceActive = true
self.mapView.locationSimulator?.simulateLocationsAlongExistingRoute()
self.mapView.cameraMode = .following
}
}
Objective-C
- (void)startNav {
NSArray<GMSNavigationWaypoint *> *destinations =
@[[[GMSNavigationWaypoint alloc] initWithPlaceID:@"ChIJnUYTpNASkFQR_gSty5kyoUk"
title:@"PCC Natural Market"]];
[_mapView.navigator setDestinations:destinations
callback:^(GMSRouteStatus routeStatus){
[_mapView.locationSimulator simulateLocationsAlongExistingRoute];
_mapView.navigator.guidanceActive = YES;
_mapView.cameraMode = GMSNavigationCameraModeFollowing;
}];
}
प्लेस आईडी के बारे में जानने के लिए, प्लेस आईडी लेख पढ़ें.
एक से ज़्यादा स्टॉप वाले रास्ते
ज़्यादा से ज़्यादा 25 वेपॉइंट कॉन्फ़िगर किए जा सकते हैं.
setDestinations मेथड, एक से ज़्यादा स्टॉप वाली यात्राओं के लिए काम नहीं करता. यात्रा के अगले चरण पर जाने के लिए, continueToNextDestinationWithCompletion() का इस्तेमाल करें.
यात्रा का मोड सेट करना
यात्रा के मोड से, रूट का टाइप और उपयोगकर्ता के रास्ते का पता लगाने का तरीका तय होता है. किसी रास्ते के लिए, यात्रा के चार मोड में से कोई एक सेट किया जा सकता है: ड्राइविंग, साइकल चलाना, पैदल चलना, और टैक्सी. ड्राइविंग और टैक्सी मोड में, उपयोगकर्ता का कोर्स यात्रा की दिशा पर आधारित होता है. साइकल चलाने और पैदल चलने के मोड में, कोर्स को उस दिशा से दिखाया जाता है जिस दिशा में डिवाइस का ऊपरी हिस्सा होता है. लैंडस्केप मोड में, डिवाइस का ऊपरी हिस्सा ऊपर की ओर होता है.
मैप व्यू की travelMode प्रॉपर्टी सेट करें. इसके लिए, यहां दिया गया उदाहरण देखें:
Swift
self.mapView.travelMode = .cycling
Objective-C
_mapView.travelMode = GMSNavigationTravelModeCycling;
उन सड़कों को सेट करना जिन पर यात्रा नहीं करनी है
किसी रास्ते पर हाइवे, टोल रोड या दोनों से बचने के लिए, avoidsHighways और avoidsTolls BOOL प्रॉपर्टी का इस्तेमाल करें.
Swift
self.mapView.navigator?.avoidsTolls = true
Objective-C
_mapView.navigator.avoidsTolls = YES;
ऑडियो गाइडेंस की आवाज़ सेट करना
आवाज़ से रास्ता बताने की सुविधा के लिए वॉल्यूम अडजस्ट करने के लिए, नेविगेटर पर volumeLevel प्रॉपर्टी को कम, सामान्य या ज़्यादा पर सेट करें. नेविगेटर, आवाज़ के उस लेवल का इस्तेमाल करता है जिसे आखिरी बार सेव किया गया था. अगर ऐसा नहीं होता है, तो आवाज़ का लेवल सामान्य हो जाता है.
Swift
self.mapView.navigator?.volumeLevel = .low
Objective-C
_mapView.navigator.volumeLevel = GMSNavigationVolumeLevelLow;
PlaceID फ़ाइंडर
रास्ते के डेस्टिनेशन के लिए इस्तेमाल किए जाने वाले प्लेस आईडी ढूंढने के लिए, PlaceID Finder का इस्तेमाल किया जा सकता है. GMSNavigationWaypoint की मदद से, placeID से कोई डेस्टिनेशन जोड़ें.
फ़्लोटिंग टेक्स्ट
अपने ऐप्लिकेशन में किसी भी जगह पर फ़्लोटिंग टेक्स्ट जोड़ा जा सकता है. हालांकि, यह ज़रूरी है कि Google के एट्रिब्यूशन पर कोई असर न पड़े. Navigation SDK, मैप पर मौजूद किसी खास जगह के निर्देशांक (अक्षांश, देशांतर) या किसी लेबल पर टेक्स्ट को ऐंकर करने की सुविधा नहीं देता. ज़्यादा जानकारी के लिए, जानकारी वाले विंडो लेख पढ़ें.