नेविगेशन यूज़र इंटरफ़ेस (यूआई) में बदलाव करना

iOS के लिए नेविगेशन SDK टूल का इस्तेमाल करके, यह तय किया जा सकता है कि मैप पर कौनसे बिल्ट-इन यूज़र इंटरफ़ेस (यूआई) कंट्रोल और एलिमेंट दिखें और किन जेस्चर की अनुमति देनी है. ऐसा करके, अपने मैप पर उपयोगकर्ता अनुभव को बेहतर बनाया जा सकता है. नेविगेशन यूज़र इंटरफ़ेस (यूआई) के विज़ुअल लुक में भी बदलाव किया जा सकता है. नेविगेशन यूज़र इंटरफ़ेस (यूआई) में स्वीकार किए जाने वाले बदलावों से जुड़े दिशा-निर्देशों के लिए, नीतियां पेज देखें.

मैप के यूज़र इंटरफ़ेस (यूआई) के कंट्रोल

नेविगेशन SDK टूल में कुछ बिल्ट-इन यूज़र इंटरफ़ेस (यूआई) कंट्रोल होते हैं. ये कंट्रोल, iOS ऐप्लिकेशन के लिए Google Maps में मिलने वाले कंट्रोल से मिलते-जुलते होते हैं. GMSUISettings क्लास का इस्तेमाल करके, इन कंट्रोल के दिखने की सेटिंग को टॉगल किया जा सकता है. इस क्लास में किए जाने वाले बदलाव, मैप पर तुरंत दिखने लगेंगे.

कंपास

नेविगेशन SDK एक कंपास ग्राफ़िक उपलब्ध कराता है, जो मैप के ऊपरी दाएं कोने में कुछ खास परिस्थितियों में और सिर्फ़ चालू होने पर ही दिखता है. कंपास सिर्फ़ तब दिखता है, जब कैमरा इस तरह ओर झुकाया गया हो कि उसमें सटीक उत्तर (शून्य के अलावा) के अलावा अन्य स्थिति हो. जब कोई उपयोगकर्ता कंपास पर क्लिक करता है, तो कैमरा ज़ीरो (डिफ़ॉल्ट ओरिएंटेशन) वाली पोज़िशन पर वापस आ जाता है और कुछ ही समय बाद कंपास फ़ेड हो जाता है.

अगर नेविगेशन चालू है और कैमरा मोड "फ़ॉलो किया जा रहा है" पर सेट है, तो कंपास दिख रहा होगा. साथ ही, झुके हुए और खास जानकारी वाले कैमरे के ऐंगल के बीच कंपास पर टैप होगा.

कंपास डिफ़ॉल्ट रूप से बंद होता है. GMSUISettings की compassButton प्रॉपर्टी को YES पर सेट करके, कंपास चालू किया जा सकता है. हालांकि, कंपास को हमेशा दिखाने के लिए फ़ोर्स नहीं किया जा सकता.

Swift

mapView.settings.compassButton = true

Objective-C

mapView.settings.compassButton = YES;

मेरी जगह की जानकारी का बटन

मेरा स्थान बटन, स्क्रीन के नीचे दाएं कोने में केवल तब दिखाई देता है, जब मेरा स्थान बटन सक्षम होता है. जब कोई उपयोगकर्ता बटन पर क्लिक करता है, तब कैमरे का ऐनिमेशन, उपयोगकर्ता की मौजूदा जगह की जानकारी पर फ़ोकस करता है. हालांकि, ऐसा तब होता है, जब उपयोगकर्ता की मौजूदा जगह की जानकारी मौजूद हो. GMSUISettings की myLocationButton प्रॉपर्टी को YES पर सेट करके, बटन को चालू किया जा सकता है.

Swift

mapView.settings.myLocationButton = true

Objective-C

mapView.settings.myLocationButton = YES;

फिर से बीच में लाने का बटन

नेविगेशन चालू होने पर, जब उपयोगकर्ता मैप व्यू को स्क्रोल करता है, तब रीसेंटर बटन दिखता है. साथ ही, जब उपयोगकर्ता मैप को फिर से सेंटर पर सेट करने के लिए टैप करता है, तब यह बटन गायब हो जाता है. फिर से बीच में लाने वाले बटन को दिखाने के लिए, GMSUISettings की recenterButtonEnabled प्रॉपर्टी को YES पर सेट करें. फिर से बीच में लाने वाले बटन को दिखने से रोकने के लिए, recenterButtonEnabled को NO पर सेट करें.

Swift

mapView.settings.isRecenterButtonEnabled = true

Objective-C

mapView.settings.recenterButtonEnabled = YES;

मैप यूज़र इंटरफ़ेस (यूआई) की ऐक्सेसरी

नेविगेशन के लिए SDK टूल, यूज़र इंटरफ़ेस (यूआई) ऐक्सेसरी उपलब्ध कराता है, जो नेविगेशन के दौरान Google Maps for iOS ऐप्लिकेशन में मिलने वाली ऐक्सेसरी से मिलती-जुलती हैं. इस सेक्शन में बताए गए तरीके से, इन कंट्रोल के दिखने या दिखने के तरीके में बदलाव किया जा सकता है. यहां किए गए बदलाव, ड्राइवर की अगली यात्रा के दौरान दिखते हैं.

नेविगेशन के दौरान, नेविगेशन हेडर स्क्रीन पर सबसे ऊपर और नेविगेशन फ़ुटर नीचे दिखता है. नेविगेशन हेडर, रास्ते पर अगले मोड़ के लिए सड़क का नाम और दिशा के साथ-साथ नीचे दिए गए मोड़ की दिशा भी दिखाता है. नेविगेशन फ़ुटर, मंज़िल तक पहुंचने में लगने वाले अनुमानित समय और दूरी के साथ-साथ पहुंचने का अनुमानित समय भी दिखाता है.

नेविगेशन हेडर और फ़ुटर के दिखने की सेटिंग को टॉगल किया जा सकता है. साथ ही, इन प्रॉपर्टी का इस्तेमाल करके प्रोग्राम के हिसाब से, इसके रंगों को सेट किया जा सकता है:

  • navigationHeaderEnabled — इससे यह कंट्रोल किया जाता है कि नेविगेशन हेडर दिखेगा या नहीं (डिफ़ॉल्ट तौर पर true है).
  • navigationFooterEnabled — इससे यह कंट्रोल किया जाता है कि नेविगेशन फ़ुटर दिखेगा या नहीं (डिफ़ॉल्ट तौर पर यह true है).
  • navigationHeaderPrimaryBackgroundColor — नेविगेशन हेडर के लिए मुख्य बैकग्राउंड का रंग सेट करता है.
  • navigationHeaderSecondaryBackgroundColor — नेविगेशन हेडर के लिए दूसरा बैकग्राउंड कलर सेट करता है.

नीचे दिए गए उदाहरण में, हेडर और फ़ुटर के लिए 'किसको दिखे' सेटिंग चालू की गई है, फिर navigationHeaderPrimaryBackgroundColor को नीले और navigationHeaderSecondaryBackgroundColor को लाल पर सेट किया गया है.

Swift

mapView.settings.isNavigationHeaderEnabled = true
mapView.settings.isNavigationFooterEnabled = true
mapView.settings.navigationHeaderPrimaryBackgroundColor = .blue
mapView.settings.navigationHeaderSecondaryBackgroundColor = .red

Objective-C

mapView.settings.navigationHeaderEnabled = YES;
mapView.settings.navigationFooterEnabled = YES;
mapView.settings.navigationHeaderPrimaryBackgroundColor = [UIColor blueColor];
mapView.settings.navigationHeaderSecondaryBackgroundColor = [UIColor redColor];

सेकंडरी नेविगेशन हेडर व्यू को पसंद के मुताबिक बनाए गए ऐक्सेसरी व्यू से बदलकर, ऐप्लिकेशन को अपनी पसंद के मुताबिक बनाया जा सकता है. ऐसा करने के लिए, ऐसा व्यू बनाएं जो GMSNavigationAccessoryView प्रोटोकॉल को लागू करता हो. इस प्रोटोकॉल का एक ज़रूरी तरीका है: -heightForAccessoryViewConstrainedToSize:onMapView:. आपको दिए गए MapView पर आपके व्यू के लिए ज़्यादा से ज़्यादा उपलब्ध साइज़ दिया गया है और आपको अपने व्यू के लिए ज़रूरी ऊंचाई देनी होगी.

इसके बाद, setHeaderAccessoryView: को कॉल करके इस व्यू को MapsView में भेजा जा सकता है. mapView किसी मौजूदा व्यू को ऐनिमेट करता है और फिर आपके कस्टम व्यू में ऐनिमेट होता है. नेविगेशन हेडर दिखना ज़रूरी है, ताकि आपका कस्टम व्यू दिख सके.

कस्टम हेडर ऐक्सेसरी व्यू हटाने के लिए, nil को setHeaderAccessoryView: पर पास करें

अगर आपके व्यू का साइज़ किसी भी समय बदलना ज़रूरी है, तो साइज़ बदलने के लिए व्यू पास करने पर, invalidateLayoutForAccessoryView: को कॉल किया जा सकता है.

उदाहरण

नीचे दिया गया कोड उदाहरण एक कस्टम व्यू दिखाता है, जो GMSNavigationAccessoryView प्रोटोकॉल लागू करता है. इसके बाद, इस कस्टम व्यू का इस्तेमाल कस्टम नेविगेशन हेडर ऐक्सेसरी व्यू को सेट करने के लिए किया जाता है.

Swift

class MyCustomView: UIView, GMSNavigationAccessoryView {
…
  func heightForAccessoryViewConstrained(to size: CGSize, on mapView: GMSMapView) -> CGFloat {
    // viewHeight gets calculated as the height your view needs.
    return viewHeight
  }
…
}

let customView = MyCustomView(...)
mapView.setHeaderAccessory(customView)

// At some later point customView changes size.
mapView.invalidateLayout(forAccessoryView: customView)

// Remove the custom header accessory view.
mapView.setHeaderAccessory(nil)

Objective-C

@interface MyCustomView : UIView <GMSNavigationAccessoryView>
…
@end

@implementation MyCustomView
…
- (CGFloat)heightForAccessoryViewConstrainedToSize:(CGSize)size onMapView:(GMSMapView *)mapView {
  // viewHeight gets calculated as the height your view needs.
  return viewHeight;
}
…
@end

MyCustomView *customView = [[MyCustomView alloc] init…];
[_mapView setHeaderAccessoryView:customView];

// At some later point customView changes size.
[_mapView invalidateLayoutForAccessoryView:customView];

// Remove the custom header accessory view.
[_mapView setHeaderAccessoryView:nil];

दिशा-निर्देशों की सूची

अपने ऐप्लिकेशन में सिलसिलेवार तरीके से निर्देश दिए जा सकते हैं. नीचे दिए गए उदाहरण में ऐसा करने का एक तरीका बताया गया है. ये तरीके अपनी ज़रूरत के हिसाब से अलग-अलग हो सकते हैं.

  1. GMSNavigator पर setDestinations (नेविगेटर) के पूरा होने और नेविगेटर पर guidanceActive चालू होने के बाद, एंट्री पॉइंट बटन चालू करें.
  2. उपयोगकर्ता के एंट्री पॉइंट बटन पर टैप करने पर, GMSMapView (mapView) से जुड़े नेविगेटर के साथ GMSNavigationDirectionsListController (कंट्रोलर) बनाएं.
  3. कंट्रोलर को UIViewController (व्यू कंट्रोलर) के इंस्टेंस में जोड़ें और directionsListView को व्यू कंट्रोलर के सबव्यू के तौर पर जोड़ें. कंट्रोलर पर reloadData और invalidateLayout तरीकों को वैसा ही कॉल किया जाना चाहिए जैसा UICollectionView के साथ किया जाता है.
  4. व्यू कंट्रोलर को ऐप्लिकेशन के व्यू कंट्रोलर हैरारकी पर पुश करें.

नीचे दिए गए कोड के उदाहरण में, DirectionsListViewController जोड़ने का तरीका बताया गया है.

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  // Add the directionsListView to the host view controller's view.
  let directionsListView = directionsListController.directionsListView
  directionsListView.frame = self.view.frame
  self.view.addSubview(directionsListView)
  directionsListView.translatesAutoresizingMaskIntoConstraints = false
  directionsListView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
  directionsListView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
  directionsListView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
  directionsListView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
  ...
}

override func viewWillAppear(_ animated: Bool) {
  super.viewWillAppear(animated)
  // Ensure data is fresh when the view appears.
  directionsListController.reloadData()
  ...
}

override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
  super.willTransition(to: newCollection, with: coordinator)
  // Invalidate the layout during rotation.
  coordinator.animate(alongsideTransition: {_ in
    self.directionsListController.invalidateLayout()
  })
  ...
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  // Add the directionsListView to the host view controller's view.
  UIView *directionsListView = _directionsListController.directionsListView;
  directionsListView.frame = self.view.bounds;
  [self.view addSubview:directionsListView];
  directionsListView.translatesAutoresizingMaskIntoConstraints = NO;
  [directionsListView.topAnchor constraintEqualToAnchor:self.view.topAnchor].active = YES;
  [directionsListView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor].active = YES;
  [directionsListView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor].active = YES;
  [directionsListView.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor].active = YES;
  ...
}

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  // Ensure data is fresh when the view appears.
  [_directionsListController reloadData];
  ...
}

- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection
              withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
  [super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
  void(^animationBlock)(id <UIViewControllerTransitionCoordinatorContext>context) =
      ^void(id <UIViewControllerTransitionCoordinatorContext>context) {
    [_directionsListController invalidateLayout];
  };
  // Invalidate the layout during rotation.
  [coordinator animateAlongsideTransition:animationBlock
                               completion:nil];
  ...
}

...

यात्रा की प्रोग्रेस बार

यात्रा के प्रोग्रेस बार को नेविगेशन में जोड़ा गया.

यात्रा की प्रोग्रेस बार, एक वर्टिकल बार होता है. यह नेविगेशन शुरू होने पर मैप के पीछे दाएं किनारे पर दिखता है. इसे चालू करने पर, यह पूरी यात्रा की खास जानकारी दिखाता है. साथ ही, इसमें ड्राइवर की मंज़िल और मौजूदा स्थिति की जानकारी भी दिखती है.

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

यात्रा की प्रोग्रेस बार में, यात्रा की स्थिति दिखाने वाले संकेत दिखते हैं:

  • ट्रैफ़िक की स्थिति—आने वाले ट्रैफ़िक की स्थिति.

  • मौजूदा जगह—यात्रा के दौरान ड्राइवर की मौजूदा जगह.

  • बीता हुआ रास्ता—यात्रा का बीत चुका हिस्सा.

GMSUISettings में navigationTripProgressBarEnabled प्रॉपर्टी को सेट करके, यात्रा के प्रोग्रेस बार को चालू करें.

Swift

mapView.settings.isNavigationTripProgressBarEnabled = true

Objective-C

mapView.settings.navigationTripProgressBarEnabled = YES;

ट्रैफ़िक लाइट और रुकने के संकेत

नेविगेशन के दौरान दिखने वाले साइन और ट्रैफ़िक लाइटों को बंद करें.

आप mapView में ट्रैफ़िक लाइट चालू कर सकते हैं और साइन इन बंद कर सकते हैं. इस सुविधा की मदद से ड्राइवर अपने रास्ते के साथ-साथ ट्रैफ़िक लाइट या साइन साइन आइकॉन दिखाना चालू कर सकता है, जिससे कि सफ़र को आसान और सटीक बनाने में मदद मिलती है.

iOS के लिए नेविगेशन SDK टूल में, ट्रैफ़िक लाइट और स्टॉप साइन, डिफ़ॉल्ट रूप से बंद रहते हैं. इस सुविधा को चालू करने के लिए, हर विकल्प के लिए GMSMapView सेटिंग को अलग-अलग कॉल करें: showsTrafficLights और showsStopSigns.


Swift

mapView.settings.showsTrafficLights = YES;
mapView.settings.showsStopSigns = YES;

Objective-C

mapView.settings.showsTrafficLights = true;
mapView.settings.showsStopSigns = true;

स्पीडोमीटर कंट्रोल

नेविगेशन चालू होने पर, iOS के लिए नेविगेशन SDK टूल, मैप के निचले कोने में रफ़्तार की सीमा कंट्रोल दिखाता है, जो मौजूदा स्पीड की सीमा दिखाता है. जब ड्राइवर की रफ़्तार सीमा से ज़्यादा हो जाती है, तब कंट्रोल बड़ा हो जाता है और ड्राइवर की मौजूदा रफ़्तार के साथ-साथ दूसरा स्पीडोमीटर दिखाता है.

जब ड्राइवर की गति सीमा एक तय मात्रा से पार हो जाती है, तब अलर्ट के लेवल सेट करके स्पीडोमीटर डिसप्ले की फ़ॉर्मैटिंग में बदलाव किया जा सकता है. उदाहरण के लिए, अगर ड्राइवर की गति सीमा 5 mph से पार हो जाने पर मौजूदा स्पीड लाल टेक्स्ट के रंग में दिखती है और ड्राइवर की स्पीड सीमा से 10 mph से ज़्यादा हो जाने पर, उसे लाल रंग के बैकग्राउंड से दिखाया जाता है.

रफ़्तार की सीमा का कंट्रोल दिखाने के लिए, GMSUISettings की shouldDisplaySpeedometer प्रॉपर्टी को YES पर सेट करें. रफ़्तार की सीमा के कंट्रोल का डिसप्ले बंद करने के लिए, shouldDisplaySpeedometer को NO पर सेट करें.

Swift

mapView.shouldDisplaySpeedometer = true

Objective-C

mapView.shouldDisplaySpeedometer = YES;

स्पीडोमीटर के लिए अलर्ट सेट करने के बारे में ज़्यादा जानकारी के लिए, स्पीडोमीटर अलर्ट कॉन्फ़िगर करें देखें.

डेस्टिनेशन मार्कर

GMSUISettings की showsDestinationMarkers प्रॉपर्टी सेट करके, किसी दिए गए रास्ते के लिए डेस्टिनेशन मार्कर को दिखाया या छिपाया जा सकता है. नीचे दिए गए उदाहरण में, डेस्टिनेशन मार्कर को बंद करने का तरीका बताया गया है.

Swift

mapView.settings.showsDestinationMarkers = false

Objective-C

mapView.settings.showsDestinationMarkers = NO;

मैप की परफ़ॉर्मेंस से जुड़ी सुविधाएं

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

डिफ़ॉल्ट मैप जेस्चर अक्षम करें

GMSUISettings क्लास की प्रॉपर्टी सेट करके, मैप पर डिफ़ॉल्ट जेस्चर को बंद किया जा सकता है, जो GMSMapView की प्रॉपर्टी के तौर पर उपलब्ध है. इन जेस्चर को प्रोग्राम के हिसाब से चालू और बंद किया जा सकता है. ध्यान दें कि जेस्चर को बंद करने से, कैमरे की सेटिंग का प्रोग्राम के हिसाब से ऐक्सेस सीमित नहीं होगा.

  • scrollGestures — यह कंट्रोल करती है कि स्क्रोल करने के लिए हाथ के जेस्चर चालू हैं या बंद. अगर यह सेटिंग चालू है, तो उपयोगकर्ता कैमरा पैन करने के लिए स्वाइप कर सकते हैं.
  • zoomGestures — यह कंट्रोल करती है कि ज़ूम करने के लिए हाथ के जेस्चर चालू हैं या बंद हैं. अगर यह सुविधा चालू होती है, तो उपयोगकर्ता कैमरे को ज़ूम करने के लिए दो बार टैप कर सकते हैं, दो उंगलियों से टैप कर सकते हैं या पिंच कर सकते हैं. ध्यान दें कि scrollGestures चालू होने पर दो बार टैप करने या पिंच करने से, कैमरे को तय की गई जगह तक पैन किया जा सकता है.
  • tiltGestures — यह कंट्रोल करती है कि झुकाने के जेस्चर चालू हैं या बंद हैं. इस सुविधा को चालू करने पर, उपयोगकर्ता कैमरे को झुकाने के लिए, दो उंगलियों से नीचे या ऊपर की ओर स्वाइप कर सकते हैं.
  • rotateGestures — यह कंट्रोल करती है कि हाथ के जेस्चर को घुमाने की सुविधा चालू है या बंद. इस सुविधा के चालू होने पर उपयोगकर्ता, कैमरे को घुमाने के लिए दो उंगलियों से घुमाने के जेस्चर का इस्तेमाल कर सकते हैं.

इस उदाहरण में, पैन और ज़ूम करने के लिए हाथ के जेस्चर बंद कर दिए गए हैं.

Swift

mapView.settings.scrollGestures = false
mapView.settings.zoomGestures = false

Objective-C

mapView.settings.scrollGestures = NO;
mapView.settings.zoomGestures = NO;

पोज़िशन कंट्रोल और यूज़र इंटरफ़ेस (यूआई) एलिमेंट

नेविगेशन हेडर और फ़ुटर की जगह के हिसाब से कंट्रोल और दूसरे यूज़र इंटरफ़ेस (यूआई) एलिमेंट को पोज़िशन करने के लिए, इन प्रॉपर्टी का इस्तेमाल करें:

  • navigationHeaderLayoutGuide
  • navigationFooterLayoutGuide

नीचे दिए गए कोड के उदाहरण में, मैप व्यू में लेबल की एक जोड़ी को पोज़िशन करने के लिए लेआउट गाइड का इस्तेमाल किया गया है:

Swift

/* Add a label to the top left, positioned below the header. */
let topLabel = UILabel()
topLabel.text = "Top Left"
mapView.addSubview(topLabel)
topLabel.translatesAutoresizingMaskIntoConstraints = false
topLabel.topAnchor.constraint(equalTo: mapView.navigationHeaderLayoutGuide.bottomAnchor).isActive = true
topLabel.leadingAnchor.constraint(equalTo: mapView.leadingAnchor).isActive = true

/* Add a label to the bottom right, positioned above the footer. */
let bottomLabel = UILabel()
bottomLabel.text = "Bottom Right"
mapView.addSubview(bottomLabel)
bottomLabel.translatesAutoresizingMaskIntoConstraints = false
bottomLabel.bottomAnchor.constraint(equalTo: mapView.navigationFooterLayoutGuide.topAnchor).isActive = true
bottomLabel.trailingAnchor.constraint(equalTo: mapView.trailingAnchor).isActive = true

Objective-C

/* Add a label to the top left, positioned below the header. */
UILabel *topLabel = [[UILabel alloc] init];
topLabel.text = @"Top Left";
[view addSubview:topLabel];
topLabel.translatesAutoresizingMaskIntoConstraints = NO;
[topLabel.topAnchor
    constraintEqualToAnchor:mapView.navigationHeaderLayoutGuide.bottomAnchor].active = YES;
[topLabel.leadingAnchor constraintEqualToAnchor:mapView.leadingAnchor].active = YES;

/* Add a label to the bottom right, positioned above the footer. */
UILabel *bottomLabel = [[UILabel alloc] init];
bottomLabel.text = @"Bottom Right";
[view addSubview:bottomLabel];
bottomLabel.translatesAutoresizingMaskIntoConstraints = NO;
[bottomLabel.bottomAnchor
    constraintEqualToAnchor:mapView.navigationFooterLayoutGuide.topAnchor].active = YES;
[bottomLabel.trailingAnchor constraintEqualToAnchor:mapView.trailingAnchor].active = YES;

वैकल्पिक रास्ते छिपाएं

जब यूज़र इंटरफ़ेस बहुत ज़्यादा जानकारी से भरा हो जाए, तो डिफ़ॉल्ट (दो) से कम वैकल्पिक रास्ते दिखाएं या कोई भी दूसरा रास्ता न दिखाएं. रूट फ़ेच करने से पहले, इस विकल्प को कॉन्फ़िगर किया जा सकता है. इसके लिए, GMSNavigationRoutingOptions को कॉन्फ़िगर करें और alternateRoutesStrategy को यहां दी गई इन्यूमिरेशन वैल्यू में से किसी एक के साथ सेट करें:

इन्यूमिरेशन वैल्यूब्यौरा
GMSनेविगेशनAlternativeRoutesStrategyसभी डिफ़ॉल्ट. दो वैकल्पिक रास्ते दिखाता है.
GMSनेविगेशनAlternativeRoutesस्ट्रेटजीOne एक वैकल्पिक रास्ता दिखाता है (अगर कोई वैकल्पिक रास्ता उपलब्ध है).
GMSNavigationAlternateRoutesStrategyNone वैकल्पिक रास्ते छिपाता है.

उदाहरण

नीचे दिए गए कोड के उदाहरण में, वैकल्पिक रास्तों को पूरी तरह छिपाने का तरीका बताया गया है.

Swift

let routingOptions = GMSNavigationRoutingOptions(alternateRoutesStrategy: .none)
navigator?.setDestinations(destinations,
                           routingOptions: routingOptions) { routeStatus in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithAlternateRoutesStrategy:GMSNavigationAlternateRoutesStrategyNone];
[navigator setDestinations:destinations
            routingOptions:routingOptions
                  callback:^(GMSRouteStatus routeStatus){...}];