באמצעות Navigation SDK ל-iOS, אתם יכולים לשנות את חוויית השימוש במפה על ידי קביעה אילו רכיבים אינטראקטיביים ורכיבים מובנים של ממשק המשתמש יופיעו במפה, ואילו תנועות אתם מאפשרים. אפשר גם לשנות את המראה של ממשק המשתמש של הניווט. בדף המדיניות מפורטות הנחיות לגבי שינויים מקובלים בממשק המשתמש של הניווט.
רכיבים אינטראקטיביים בממשק המשתמש של המפה
Navigation SDK כולל כמה רכיבים אינטראקטיביים מובנים שדומים לאלה שבאפליקציית מפות Google ל-iOS. אפשר להחליף את מצב החשיפה של אמצעי הבקרה האלה באמצעות המחלקה GMSUISettings. השינויים שתבצעו במחלקה הזו יופיעו מיד במפה.
מצפן
ב-Navigation SDK יש גרפיקה של מצפן שמופיעה בפינה הימנית העליונה של המפה בנסיבות מסוימות, ורק כשהיא מופעלת. כשהמשתמש לוחץ על המצפן, המצלמה חוזרת למיקום עם כיוון אפס (כיוון ברירת המחדל) והמצפן נעלם זמן קצר לאחר מכן.
אם הניווט מופעל ומצב המצלמה מוגדר כ "מעקב", המצפן נשאר גלוי, והקשה על המצפן מחליפה בין נקודות המבט של המצלמה: מוטה וסקירה כללית.
כדי למנוע הסחת דעת של הנהג, המצפן נשאר באותו מיקום אם הכותרת (במצב לאורך) מתרחבת ומתנגשת עם מיקום ברירת המחדל של המצפן. אם מוסיפים פקד מותאם אישית לכותרת משנית או תצוגת אביזר לכותרת, המצפן מוסתר כדי למנוע התנגשויות בממשק המשתמש.
המצפן תומך במצב יום ובמצב לילה, וגם במצב כהה.
התכונה 'מצפן' מופעלת כברירת מחדל בגרסה 11.0.0 ואילך. כדי להשבית את המצפן, מגדירים את המאפיין compassButton של GMSUISettings לערך false.
Swift
mapView.settings.compassButton = false
Objective-C
mapView.settings.compassButton = NO;
הכפתור 'המיקום שלי'
הלחצן 'המיקום שלי' מופיע בפינה השמאלית התחתונה של המסך רק כשהוא מופעל. כשמשתמש לוחץ על הלחצן, המצלמה מתמקדת במיקום הנוכחי של המשתמש אם המיקום שלו ידוע. כדי להפעיל את הכפתור, מגדירים את המאפיין myLocationButton של GMSUISettings לערך true.
Swift
mapView.settings.myLocationButton = true
Objective-C
mapView.settings.myLocationButton = YES;
כפתור המרכוז
כשהניווט מופעל, הלחצן 'מרכוז מחדש' מופיע כשהמשתמש מבצע גלילה בתצוגת המפה, ונעלם כשהמשתמש מקיש כדי למרכז מחדש את המפה. כדי לאפשר את הצגת לחצן המרכוז מחדש, צריך להגדיר את המאפיין recenterButtonEnabled של GMSUISettings ל-true. כדי למנוע את הופעת הלחצן "מרכוז מחדש", מגדירים את recenterButtonEnabled כ-false.
Swift
mapView.settings.isRecenterButtonEnabled = true
Objective-C
mapView.settings.recenterButtonEnabled = YES;
אביזרים לממשק המשתמש של המפה
Navigation SDK מספק רכיבי UI שמופיעים במהלך הניווט, בדומה לאלה שמופיעים באפליקציית מפות Google ל-iOS. אתם יכולים לשנות את החשיפה או את המראה של אמצעי הבקרה האלה, כמו שמתואר בקטע הזה. השינויים שתבצעו כאן ישתקפו בנסיעה הבאה של המשתמש.
כותרת עליונה וכותרת תחתונה לניווט

במהלך הניווט, הכותרת העליונה של הניווט מופיעה בחלק העליון של המסך והכותרת התחתונה של הניווט מופיעה בחלק התחתון. בכותרת הניווט מוצגים שם הרחוב והכיוון של הפנייה הבאה במסלול, וגם הכיוון של הפנייה שאחריה. בכותרת התחתונה של הניווט מוצגים הזמן המשוער והמרחק ליעד, וגם זמן ההגעה המשוער.
אפשר להחליף את החשיפה של הכותרת העליונה והכותרת התחתונה של הניווט ולהגדיר את הצבעים שלהן באופן פרוגרמטי באמצעות המאפיינים הבאים:
-
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 הנתון, ואתם צריכים לספק את הגובה שהתצוגה דורשת.
אחר כך אפשר להעביר את התצוגה הזו אל mapView על ידי קריאה ל-setHeaderAccessoryView:
מערכת 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];
צבעי הכותרת במצב תאורה חלשה
Navigation SDK ל-iOS מחשב את מצב התאורה המוצע על סמך השעה ביום והמיקום הנוכחי של המכשיר, וקורא ל-listener method GMSNavigatorListener.didChangeSuggestedLightingMode כשהמצב המוצע משתנה (למשל בזריחה או בשקיעה).
אפשר לשנות את ההתנהגות של מצב תאורה חלשה באופן פרוגרמטי בדרכים הבאות:
- כדי לשלוט מתי המפה תשתמש במצב רגיל ובמצב תאורה חלשה, צריך להגדיר את הערך
GMSMapView.lightingModeלערךGMSNavigationLightingMode. מידע נוסף על הפעלת מעבר אוטומטי בין מצבי תאורה זמין במאמר הגדרת מצב רגיל ומצב תאורה חלשה. - כדי להתאים אישית את צבעי הרקע הראשיים והמשניים של כותרת הניווט במצב תאורה חלשה, מגדירים את המאפיינים
navigationHeaderPrimaryBackgroundColorNightModeו-navigationHeaderSecondaryBackgroundColorNightModeב-GMSUISettings.
רשימת מסלולי הגעה
אתם יכולים לספק הוראות מפורטות באפליקציה. בדוגמה הבאה מוצגת דרך אחת לעשות זאת. השלבים האלה עשויים להשתנות בהתאם להטמעה שלכם.
- מפעילים כפתור של נקודת כניסה אחרי ש-
setDestinationsב-GMSNavigator(navigator) הושלם בהצלחה ו-guidanceActiveב-navigator הופעל. - כשמשתמש לוחץ על כפתור נקודת הכניסה, יוצרים
GMSNavigationDirectionsListController(בקר) עם ה-navigator שמשויך ל-GMSMapView(mapView). - מוסיפים את ה-controller למופע של
UIViewController(view controller), ומוסיפים את ה-directionsListViewבתור תצוגת משנה של ה-view controller. צריך להפעיל את השיטות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)
// 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];
...
}
...
סרגל התקדמות הנסיעה

סרגל ההתקדמות במסלול הוא סרגל אנכי שמופיע בצד ההתחלה או בצד המוביל של המפה כשהניווט מתחיל. כשהאפשרות הזו מופעלת, מוצג סיכום של כל הנסיעה, יחד עם היעד של המשתמש והמיקום הנוכחי שלו.
כך המשתמשים יכולים לצפות במהירות בעיות שעלולות לצוץ, כמו עומסי תנועה, בלי להגדיל את התצוגה. הם יכולים לשנות את מסלול הנסיעה אם צריך. אם המשתמש משנה את המסלול של הנסיעה, סרגל ההתקדמות מתאפס כאילו נסיעה חדשה התחילה מהנקודה הזו.
בסרגל ההתקדמות של הנסיעה מוצגים האינדיקטורים הבאים של הסטטוס:
מצב התנועה – מצב התנועה בהמשך הדרך.
המיקום הנוכחי – המיקום הנוכחי של הנהג בנסיעה.
החלק שעבר במסלול – החלק בנסיעה שכבר עבר.
מפעילים את סרגל ההתקדמות של הנסיעה על ידי הגדרת המאפיין navigationTripProgressBarEnabled ב-GMSUISettings.
Swift
mapView.settings.isNavigationTripProgressBarEnabled = true
Objective-C
mapView.settings.navigationTripProgressBarEnabled = YES;
המיקום של סרגל ההתקדמות של הנסיעה
- הצד הימני של הסרגל מיושר פחות או יותר עם הצד הימני של מד המהירות, הלוגו של Google והכפתור "חזרה למרכז" (כשהוא מוצג). הרוחב הוא 12 נקודות.
- סרגל ההתקדמות של הנסיעה מגיב באופן דינמי למרחב האנכי במסך. החלק התחתון של הסרגל ממוקם במרחק של 210 נקודות מהחלק התחתון של המסך. החלק העליון של סרגל ההתקדמות של הנסיעה נשאר במרחק של לפחות 170 נקודות מהחלק העליון של המסך, והגובה המקסימלי של הסרגל הוא 400 נקודות.
- אם סרגל ההתקדמות של הנסיעה חופף לכותרת הניווט או לרכיבים אחרים בממשק המשתמש של הניווט, הוא מופיע מתחת לרכיבים האחרים האלה.
Prompt Visibility API (ניסיוני)
בעזרת Prompt Visibility API אפשר למנוע התנגשויות בין רכיבי ממשק משתמש שנוצרו על ידי Navigation SDK לבין רכיבי ממשק משתמש מותאמים אישית משלכם. לשם כך, מוסיפים listener כדי לקבל קריאה חוזרת לפני שרכיב ממשק משתמש של Navigation SDK עומד להופיע, וברגע שהרכיב מוסר. מידע נוסף, כולל דוגמאות קוד, זמין בקטע Prompt Visibility API בדף Configure real-time-disruptions.
בקרת מד המהירות
כשמפעילים את הניווט ומגדירים את אמצעי התחבורה לנהיגה, Navigation SDK ל-iOS מציג את המהירות המותרת בפינה התחתונה של המפה. אם הנהג חורג מהמהירות המותרת, רכיב הבקרה מתרחב ומוצג בו מד מהירות שני עם המהירות הנוכחית של הנהג.
אתם יכולים להגדיר רמות התראה כדי לשנות את העיצוב של תצוגת מד המהירות כשהנהג חורג מהמהירות המותרת בכמות מסוימת. לדוגמה, אתם יכולים להגדיר שהמהירות הנוכחית תוצג בטקסט אדום כשהנהג חורג מהמהירות המותרת ב-5 קמ"ש, וברקע אדום כשהנהג חורג מהמהירות המותרת ב-10 קמ"ש.
כדי להציג את הפקד של מגבלת המהירות, מגדירים את המאפיין shouldDisplaySpeedometer של GMSUISettings לערך true. כדי להשבית את התצוגה של אמצעי הבקרה של מגבלת המהירות, מגדירים את shouldDisplaySpeedometer לערך false.
Swift
mapView.settings.shouldDisplaySpeedometer = true
Objective-C
mapView.settings.shouldDisplaySpeedometer = YES;
מידע נוסף על הגדרת התראות למד המהירות זמין במאמר הגדרת התראות למד המהירות.
סמני יעד
כדי להציג או להסתיר את סמני היעד של מסלול מסוים, מגדירים את המאפיין showsDestinationMarkers של GMSUISettings. בדוגמה הבאה מוצג איך להשבית את סמני היעד.
Swift
mapView.settings.showsDestinationMarkers = false
Objective-C
mapView.settings.showsDestinationMarkers = NO;
תכונות שקשורות לחוויית השימוש במפה
בעזרת Navigation SDK אתם יכולים להתאים אישית את חוויית הניווט של המשתמשים. השינויים שתבצעו במופע ישתקפו בעדכון הבא של האפליקציה אצל המשתמש.
הדגשת היעד והכניסות אליו
כשיוצרים יעד באמצעות placeID, מבנה היעד יודגש ויוצג סמל כניסה בכל פעם שאפשר. הסימנים החזותיים האלה עוזרים למשתמשים להבחין בין היעדים ולנווט ליעד הרצוי.
כדי ליצור יעד עם placeID, משתמשים באחד מאתחולי GMSNavigationWaypoint שמקבלים placeID. לדוגמה, היעדים שנוצרו במדריך לניווט במסלול כוללים הדגשה של היעד ותוויות כניסה, אם הן זמינות.
הצגת בניינים בתלת ממד במהלך הניווט
כברירת מחדל, בניינים בתלת ממד מוצגים במהלך הניווט. כדי להשבית את התכונה הזו, מגדירים את 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;
מיקום של אמצעי בקרה ורכיבים בממשק המשתמש
אפשר למקם רכיבי בקרה ורכיבים אחרים בממשק המשתמש ביחס למיקום של הכותרת והכותרת התחתונה של הניווט באמצעות המאפיינים הבאים:
navigationHeaderLayoutGuidenavigationFooterLayoutGuidebottomTrailingButtonsLayoutGuide
בדוגמת הקוד הבאה מוצג שימוש בקווי העזר לפריסה כדי למקם צמד תוויות בתצוגת המפה:
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){...}];