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

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

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

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

कंपास

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

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

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

SwiftObjective-C

mapView.settings.compassButton = true

mapView.settings.compassButton = YES;

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

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

SwiftObjective-C

mapView.settings.myLocationButton = true

mapView.settings.myLocationButton = YES;

मैप को फिर से बीच में लाएं बटन

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

SwiftObjective-C

mapView.settings.isRecenterButtonEnabled = true

mapView.settings.recenterButtonEnabled = YES;

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

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

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

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

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

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

SwiftObjective-C

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

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

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

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

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

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

उदाहरण

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

SwiftObjective-C

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)

@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 जोड़ने का तरीका बताया गया है.

SwiftObjective-C

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()
  })
  ...
}

- (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 प्रॉपर्टी सेट करके, यात्रा के दौरान प्रगति दिखाने वाला बार चालू करें.

SwiftObjective-C

mapView.settings.isNavigationTripProgressBarEnabled = true

mapView.settings.navigationTripProgressBarEnabled = YES;

ट्रैफ़िक लाइट और स्टॉप साइन

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

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

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


SwiftObjective-C

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

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

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

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

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

स्पीड की सीमा कंट्रोल करने के लिए, GMSUISettings की shouldDisplaySpeedometer प्रॉपर्टी को true पर सेट करें. स्पीड लिमिट कंट्रोल को डिसप्ले होने से रोकने के लिए, shouldDisplaySpeedometer को false पर सेट करें.

SwiftObjective-C

mapView.shouldDisplaySpeedometer = true

mapView.shouldDisplaySpeedometer = YES;

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

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

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

SwiftObjective-C

mapView.settings.showsDestinationMarkers = false

mapView.settings.showsDestinationMarkers = NO;

मैप पर अनुभव से जुड़ी सुविधाएं

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

मैप पर डिफ़ॉल्ट जेस्चर बंद करना

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

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

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

SwiftObjective-C

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

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

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

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

  • navigationHeaderLayoutGuide
  • navigationFooterLayoutGuide

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

SwiftObjective-C

/* 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

/* 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 को इनमें से किसी एक वैल्यू पर सेट करके, रास्ते फ़ेच करने से पहले इस विकल्प को कॉन्फ़िगर किया जा सकता है:

एनुमरेशन वैल्यूब्यौरा
GMSNavigationAlternateRoutesStrategyAll डिफ़ॉल्ट. ज़्यादा से ज़्यादा दो वैकल्पिक रास्ते दिखाता है.
GMSNavigationAlternateRoutesStrategyOne अगर कोई दूसरा रास्ता उपलब्ध है, तो वह दिखाया जाता है.
GMSNavigationAlternateRoutesStrategyNone इससे, दूसरे रास्ते छिप जाते हैं.

उदाहरण

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

SwiftObjective-C

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

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