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

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 (एक्सपेरिमेंट के तौर पर उपलब्ध है)

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){...}];