iOS के लिए नेविगेशन एसडीके का इस्तेमाल करके, अपने मैप के उपयोगकर्ता अनुभव में बदलाव किया जा सकता है. इसके लिए, यह तय करें कि मैप पर कौनसे यूज़र इंटरफ़ेस (यूआई) कंट्रोल और एलिमेंट दिखें और किन जेस्चर की अनुमति दी जाए. नेविगेशन यूज़र इंटरफ़ेस (यूआई) के विज़ुअल डिज़ाइन में भी बदलाव किया जा सकता है. नेविगेशन यूज़र इंटरफ़ेस (यूआई) में किए जा सकने वाले बदलावों के दिशा-निर्देशों के लिए, नीतियां पेज पर जाएं.
मैप के यूज़र इंटरफ़ेस (यूआई) के कंट्रोल
नेविगेशन एसडीके टूल, पहले से मौजूद कुछ यूज़र इंटरफ़ेस (यूआई) कंट्रोल उपलब्ध कराता है. ये कंट्रोल, iOS के लिए Google Maps ऐप्लिकेशन में मौजूद कंट्रोल से मिलते-जुलते होते हैं. GMSUISettings
क्लास का इस्तेमाल करके, इन कंट्रोल की विज़िबिलिटी को टॉगल किया जा सकता है.
इस क्लास में किए गए बदलाव, मैप पर तुरंत दिखते हैं.
कंपास
Navigation 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];
निर्देशों की सूची
अपने ऐप्लिकेशन में सिलसिलेवार निर्देश दिए जा सकते हैं. नीचे दिए गए उदाहरण में, ऐसा करने का एक तरीका बताया गया है. आपके लागू करने के तरीके के हिसाब से, ये चरण अलग-अलग हो सकते हैं.
GMSNavigator
(नेविगेटर) परsetDestinations
पूरा होने और नेविगेटर परguidanceActive
चालू होने के बाद, एंट्री पॉइंट बटन चालू करें.- जब कोई उपयोगकर्ता एंट्री पॉइंट बटन पर टैप करता है, तो
GMSMapView
(mapView
) से जुड़े नेविगेटर के साथGMSNavigationDirectionsListController
(कंट्रोलर) बनाएं. - कंट्रोलर को
UIViewController
(व्यू कंट्रोलर) के किसी इंस्टेंस में जोड़ें औरdirectionsListView
को व्यू कंट्रोलर के सबव्यू के तौर पर जोड़ें. कंट्रोलर परreloadData
औरinvalidateLayout
तरीकों को वैसे ही कॉल किया जाना चाहिए जैसेUICollectionView
के साथ किया जाता है. - व्यू कंट्रोलर को ऐप्लिकेशन के व्यू कंट्रोलर हैरारकी में जोड़ें.
नीचे दिए गए कोड के उदाहरण में, 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){...}];