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

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

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

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

कंपास

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

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

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

Swift

mapView.settings.compassButton = true

Objective-C

mapView.settings.compassButton = YES;

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

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

Swift

mapView.settings.myLocationButton = true

Objective-C

mapView.settings.myLocationButton = YES;

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

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

Swift

mapView.settings.isRecenterButtonEnabled = true

Objective-C

mapView.settings.recenterButtonEnabled = YES;

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

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

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

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

  • 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: को कॉल करके इस व्यू को mapView में पास किया जा सकता है. 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 = true
mapView.settings.showsStopSigns = true

Objective-C

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

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

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

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

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

Swift

mapView.shouldDisplaySpeedometer = true

Objective-C

mapView.shouldDisplaySpeedometer = YES;

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

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

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

Swift

mapView.settings.showsDestinationMarkers = false

Objective-C

mapView.settings.showsDestinationMarkers = NO;

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

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

एनोटेशन की वैल्यूब्यौरा
GMSNavigationAlternateRoutesStrategyAll डिफ़ॉल्ट. ज़्यादा से ज़्यादा दो वैकल्पिक रास्ते दिखाता है.
GMSNavigationAlternateRoutesStrategyOne अगर कोई दूसरा रास्ता उपलब्ध है, तो उसे दिखाता है.
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){...}];