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

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

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

Navigation SDK में, पहले से मौजूद कुछ यूज़र इंटरफ़ेस (यूआई) कंट्रोल होते हैं. ये कंट्रोल, iOS के लिए Google Maps ऐप्लिकेशन में मौजूद कंट्रोल की तरह ही होते हैं. 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 pt है.
  • यात्रा की प्रोग्रेस बार, स्क्रीन पर मौजूद वर्टिकल स्पेस के हिसाब से अपने-आप अडजस्ट हो जाता है. बार का निचला हिस्सा, स्क्रीन के निचले हिस्से से 210 pt की दूरी पर है. ट्रिप के प्रोग्रेस बार का ऊपरी हिस्सा, स्क्रीन के सबसे ऊपर वाले हिस्से से कम से कम 170 पॉइंट की दूरी पर होता है. साथ ही, बार की ज़्यादा से ज़्यादा ऊंचाई 400 पॉइंट होती है.
  • अगर यात्रा की प्रोग्रेस बार, नेविगेशन हेडर या नेविगेशन यूज़र इंटरफ़ेस (यूआई) के अन्य एलिमेंट के साथ ओवरलैप करता है, तो यह उन अन्य एलिमेंट के नीचे दिखता है.

Prompt Visibility API (Experimental)

प्रॉम्प्ट दिखाने की सुविधा देने वाले एपीआई की मदद से, 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){...}];