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

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

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

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

कंपास

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

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

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

कंपास, दिन और रात के मोड के साथ-साथ गहरे रंग वाले मोड के साथ भी काम करता है.

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

Swift

mapView.settings.compassButton = false

Objective-C

mapView.settings.compassButton = NO;

मेरी लोकेशन बटन

'मेरी जगह की जानकारी' बटन, स्क्रीन के सबसे नीचे दाएं कोने में सिर्फ़ तब दिखता है, जब 'मेरी जगह की जानकारी' बटन चालू हो. जब कोई उपयोगकर्ता इस बटन पर क्लिक करता है, तो कैमरा ऐनिमेट होकर उपयोगकर्ता की मौजूदा जगह पर फ़ोकस करता है. हालांकि, ऐसा तब होता है, जब उपयोगकर्ता की जगह की जानकारी उपलब्ध हो. 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;

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

Navigation SDK, यूज़र इंटरफ़ेस (यूआई) से जुड़ी ऐसी ऐक्सेसरी उपलब्ध कराता है जो नेविगेशन के दौरान दिखती हैं. ये ऐक्सेसरी, 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];

कम रोशनी वाले मोड में हेडर के रंग

iOS के लिए Navigation SDK, दिन के समय और डिवाइस की मौजूदा जगह के आधार पर, सुझाई गई लाइटिंग मोड का हिसाब लगाता है. साथ ही, सुझाए गए मोड में बदलाव होने पर, GMSNavigatorListener.didChangeSuggestedLightingMode लिसनर मेथड को कॉल करता है. जैसे, सूर्योदय या सूर्यास्त के समय. कम रोशनी वाले मोड के काम करने के तरीके में, प्रोग्राम के हिसाब से बदलाव किया जा सकता है. इसके लिए, ये तरीके अपनाएं:

रास्ते की जानकारी देने वाली सूची

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

  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)
  // Make sure 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];
  // Make sure 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;

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

  • बार का बायां हिस्सा, स्पीडोमीटर, Google के लोगो, और री-सेंटर बटन (दिखने पर) के बाईं ओर अलाइन होता है. चौड़ाई 12 पॉइंट है.
  • यात्रा की प्रोग्रेस बार, स्क्रीन पर मौजूद वर्टिकल स्पेस के हिसाब से डाइनैमिक तौर पर काम करती है. बार का निचला हिस्सा, स्क्रीन के निचले हिस्से से 210 पॉइंट की दूरी पर है. यात्रा की प्रोग्रेस बार का ऊपरी हिस्सा, स्क्रीन के ऊपरी हिस्से से कम से कम 170 पॉइंट की दूरी पर रहता है. साथ ही, बार की ज़्यादा से ज़्यादा ऊंचाई 400 पॉइंट होती है.
  • अगर यात्रा का प्रोग्रेस बार, नेविगेशन हेडर या नेविगेशन यूज़र इंटरफ़ेस (यूआई) के अन्य एलिमेंट के साथ ओवरलैप होता है, तो यह उन अन्य एलिमेंट के नीचे दिखता है.

Prompt Visibility API (एक्सपेरिमेंट के तौर पर उपलब्ध)

Prompt Visibility API की मदद से, Navigation SDK से जनरेट किए गए यूज़र इंटरफ़ेस (यूआई) एलिमेंट और आपके कस्टम यूज़र इंटरफ़ेस (यूआई) एलिमेंट के बीच होने वाली गड़बड़ियों से बचा जा सकता है. इसके लिए, Navigation SDK के यूज़र इंटरफ़ेस (यूआई) एलिमेंट के दिखने से पहले और एलिमेंट के हटते ही कॉलबैक पाने के लिए, एक लिसनर जोड़ना होगा. कोड सैंपल के साथ-साथ ज़्यादा जानकारी के लिए, रीयल-टाइम में होने वाली रुकावटों को कॉन्फ़िगर करें पेज पर, Prompt Visibility API सेक्शन देखें.

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

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

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

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

Swift

mapView.settings.shouldDisplaySpeedometer = true

Objective-C

mapView.settings.shouldDisplaySpeedometer = YES;

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

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

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

Swift

mapView.settings.showsDestinationMarkers = false

Objective-C

mapView.settings.showsDestinationMarkers = NO;

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

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

मंज़िल और अंदर जाने के रास्तों को हाइलाइट करना

मंज़िल और अंदर जाने के रास्तों को हाइलाइट करना

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

placeID के साथ डेस्टिनेशन बनाने के लिए, GMSNavigationWaypoint के उन इनिशलाइज़र में से किसी एक का इस्तेमाल करें जो placeID को स्वीकार करता है. उदाहरण के लिए, रास्ते पर नेविगेट करने के ट्यूटोरियल में बनाई गई मंज़िलों में, मंज़िल को हाइलाइट करने और एंट्री लेबल शामिल हैं. हालांकि, ऐसा तब ही होता है, जब ये उपलब्ध हों.

नेविगेशन के दौरान 3D बिल्डिंग दिखना

नेविगेशन के दौरान 3D बिल्डिंग दिखना

नेविगेशन के दौरान, 3D बिल्डिंग डिफ़ॉल्ट रूप से दिखती हैं. इस सुविधा को बंद करने के लिए, buildingsEnabled को false (Swift) या NO (Objective-C) पर सेट करें.

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

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
  • bottomTrailingButtonsLayoutGuide

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

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;

bottomTrailingButtonsLayoutGuide का इस्तेमाल करके, रीयल-टाइम में रुकावटों की जानकारी देने वाले बटन को सही जगह पर सेट करने का उदाहरण देखने के लिए, रीयल-टाइम में रुकावटों की जानकारी देने की सुविधा को कॉन्फ़िगर करना लेख पढ़ें.

अन्य रास्ते छिपाएं

जब यूज़र इंटरफ़ेस पर बहुत ज़्यादा जानकारी दिखती है, तो उसे कम किया जा सकता है. इसके लिए, डिफ़ॉल्ट (दो) से कम वैकल्पिक रास्ते दिखाएं या कोई भी वैकल्पिक रास्ता न दिखाएं. 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){...}];