अपने ऐप्लिकेशन में किसी एक जगह के लिए रास्ता दिखाने के लिए, इस गाइड को फ़ॉलो करें. इसके लिए, iOS के लिए Navigation SDK का इस्तेमाल करें.
खास जानकारी
- अपने ऐप्लिकेशन में Navigation SDK को इंटिग्रेट करें. इसके लिए, प्रोजेक्ट सेट अप करना सेक्शन में दिया गया तरीका अपनाएं.
-
GMSMapViewकॉन्फ़िगर करें. - उपयोगकर्ता से नियम और शर्तें स्वीकार करने के लिए कहें. साथ ही, जगह की जानकारी की सेवाओं और बैकग्राउंड में सूचनाएं दिखाने की अनुमति लें.
- एक या उससे ज़्यादा जगहों का कलेक्शन बनाएं.
मोड़-दर-मोड़ रास्ते के दिशा-निर्देश को कंट्रोल करने के लिए,
GMSNavigatorतय करें.setDestinationsका इस्तेमाल करके, जगहें जोड़ें.- नेविगेशन शुरू करने के लिए,
isGuidanceActiveकोtrueपर सेट करें. - टेस्टिंग,
डीबग करने, और अपने ऐप्लिकेशन को दिखाने के लिए,
simulateLocationsAlongExistingRouteका इस्तेमाल करके, रूट पर वाहन की प्रोग्रेस को सिम्युलेट करें.
कोड देखें
उपयोगकर्ता से ज़रूरी अनुमतियां लें
Navigation SDK का इस्तेमाल करने से पहले, उपयोगकर्ता को नियम और शर्तों से सहमत होना होगा. साथ ही, जगह की जानकारी की सेवाओं के इस्तेमाल की अनुमति देनी होगी. नेविगेशन के लिए, यह ज़रूरी है. अगर आपका ऐप्लिकेशन बैकग्राउंड में चलेगा, तो उसे उपयोगकर्ता से, रास्ते की जानकारी से जुड़ी चेतावनियों की सूचनाएं दिखाने की अनुमति भी लेनी होगी. इस सेक्शन में, ज़रूरी अनुमतियों के लिए प्रॉम्प्ट दिखाने का तरीका बताया गया है.
जगह की जानकारी की सेवाओं के इस्तेमाल की अनुमति लें
Navigation SDK, जगह की जानकारी की सेवाओं का इस्तेमाल करता है. इसके लिए, उपयोगकर्ता की अनुमति ज़रूरी है. जगह की जानकारी की सेवाओं को चालू करने और अनुमति का डायलॉग दिखाने के लिए, यह तरीका अपनाएं:
Xcode में, जगह की जानकारी और बैकग्राउंड में चलने की सुविधाएं चालू करें:
- Xcode में अपना टारगेट खोलें और Signing &Capabilities टैब चुनें. ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन में सुविधाएं जोड़ने के बारे में Apple की गाइड देखें.
- Location (Always) और Location (When In Use) सुविधाएं जोड़ें. इनमें से हर सुविधा के टेक्स्ट फ़ील्ड में, यह बताने के लिए एक छोटा सा ब्यौरा जोड़ें कि आपके ऐप्लिकेशन को जगह की जानकारी की सेवाओं की ज़रूरत क्यों है. उदाहरण के लिए: "मोड़-दर-मोड़ रास्ते की जानकारी के लिए, इस ऐप्लिकेशन को जगह की जानकारी की सेवाओं के इस्तेमाल की अनुमति चाहिए."
- 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 को अपग्रेड करने पर, शुरुआती क्रैश से बचा जा सकता है.
एसडीके के आने वाले समय में होने वाले अपग्रेड के लिए, मोशन सेंसर की अनुमतियों को इस तरह कॉन्फ़िगर करें:
Xcode में अपना टारगेट खोलें और Info टैब पर जाएं या अपनी
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 फ़ाइंडर
का इस्तेमाल किया जा सकता है. GMSNavigationWaypoint की मदद से,
placeID से कोई जगह जोड़ें.
फ़्लोटिंग टेक्स्ट
अपने ऐप्लिकेशन में कहीं भी फ़्लोटिंग टेक्स्ट जोड़ा जा सकता है. हालांकि, यह ज़रूरी है कि Google एट्रिब्यूशन न छिपा हो. Navigation SDK, मैप पर अक्षांश और देशांतर के खास निर्देशांकों या किसी लेबल पर टेक्स्ट को ऐंकर करने की सुविधा के साथ काम नहीं करता. ज़्यादा जानकारी के लिए, जानकारी वाली विंडो लेख पढ़ें.