اصلاح کردن میانای کاربر پیمایش

بااستفاده از Navigation SDK برای iOS، می‌توانید تجربه کاربری را با تعیین اینکه کدام‌یک از کنترل‌ها و عناصر میانای کاربر داخلی در نقشه نشان داده شوند و کدام اشاره‌ها را مجاز می‌کنید، در نقشه‌تان اصلاح کنید. همچنین می‌توانید ظاهر بصری «میانای کاربر ناوبری» را تغییر دهید. برای اطلاع از دستورالعمل‌های مربوط به اصلاحات قابل‌قبول در «میانای کاربری ناوبری»، به صفحه خط‌مشی‌ها مراجعه کنید.

کنترل‌های میانای کاربر نقشه

Navigation SDK برخی‌از کنترل‌های میانای کاربر داخلی را ارائه می‌دهد که مشابه کنترل‌های موجود در برنامه Google Maps برای iOS است. می‌توانید بااستفاده از کلاس GMSUISettings، رؤیت‌پذیری این کنترل‌ها را تغییر دهید. تغییراتی که در این کلاس ایجاد می‌کنید بلافاصله در نقشه منعکس می‌شود.

قطب‌نما

Navigation SDK یک گرافیک قطب‌نما ارائه می‌دهد که در شرایط خاص و فقط درصورت فعال بودن در گوشه بالا سمت راست نقشه ظاهر می‌شود. وقتی کاربر روی قطب‌نما تک‌ضرب می‌زند، دوربین با پویانمایی به موقعیتی با زاویه صفر (جهت پیش‌فرض) برمی‌گردد و قطب‌نما کمی بعد محو می‌شود.

اگر پیمایش فعال باشد و حالت دوربین روی «دنبال کردن» تنظیم شده باشد، قطب‌نما قابل‌مشاهده می‌ماند و با تک‌ضرب زدن روی قطب‌نما بین چشم‌اندازهای دوربین کج و نمای کلی جابه‌جا می‌شوید.

برای جلوگیری از حواس‌پرتی راننده، اگر سرصفحه (در حالت عمودی) گسترش یابد و با موقعیت پیش‌فرض قطب‌نما تداخل داشته باشد، قطب‌نما در همان موقعیت باقی می‌ماند. اگر کنترل سفارشی سرصفحه ثانویه یا نمای لوازم جانبی سرصفحه اضافه کنید، قطب‌نما پنهان می‌شود تا از تداخل واسط کاربر جلوگیری شود.

قطب‌نما از حالت‌های روز و شب و همچنین حالت تاریک پشتیبانی می‌کند.

قطب‌نما به‌طور پیش‌فرض در نسخه ۱۱.۰.۰ و بالاتر فعال است. می‌توانید قطب‌نما را با تنظیم کردن ویژگی compassButton GMSUISettings روی false غیرفعال کنید.

Swift

mapView.settings.compassButton = false

آبجکتیو-سی

mapView.settings.compassButton = NO;

دکمه «مکان من»

دکمه «مکان من» در گوشه پایین سمت چپ صفحه فقط زمانی ظاهر می‌شود که دکمه «مکان من» فعال باشد. وقتی کاربر روی دکمه کلیک می‌کند، دوربین متحرک می‌شود تا روی مکان فعلی کاربر تمرکز کند، اگر مکان کاربر مشخص باشد. می‌توانید با تنظیم کردن myLocationButton خصوصیت GMSUISettings روی true، دکمه را فعال کنید.

Swift

mapView.settings.myLocationButton = true

آبجکتیو-سی

mapView.settings.myLocationButton = YES;

دکمه بازمرکزیابی

وقتی پیمایش فعال باشد، دکمه بازمرکز کردن زمانی ظاهر می‌شود که کاربر نمای نقشه را پیمایش کند، و زمانی ناپدید می‌شود که کاربر برای بازمرکز کردن نقشه تک‌ضرب بزند. برای اینکه دکمه «مرکز کردن مجدد» نشان داده شود، ویژگی recenterButtonEnabled GMSUISettings را روی true تنظیم کنید. برای جلوگیری از نمایش دکمه بازمرکز کردن، recenterButtonEnabled را روی false تنظیم کنید.

Swift

mapView.settings.isRecenterButtonEnabled = true

آبجکتیو-سی

mapView.settings.recenterButtonEnabled = YES;

لوازم جانبی میانای کاربر نقشه

کیت توسعه نرم‌افزار ناوبری لوازم جانبی واسط کاربری را ارائه می‌دهد که درطول ناوبری ظاهر می‌شوند، مشابه آنچه در برنامه Google Maps برای iOS یافت می‌شود. می‌توانید رؤیت‌پذیری یا ظاهر بصری این کنترل‌ها را همان‌طور که در این بخش شرح داده شده است تنظیم کنید. تغییراتی که اینجا ایجاد می‌کنید در سفر بعدی کاربر اعمال می‌شود.

درطول پیمایش، سرصفحه پیمایش در بالای صفحه و پاصفحه پیمایش در پایین صفحه نشان داده می‌شود. سرصفحه پیمایش نام خیابان و جهت پیچ بعدی در مسیر، و همچنین جهت پیچ بعدی را نشان می‌دهد. پانویس ناوبری زمان و فاصله تخمینی تا مقصد و همچنین زمان تخمینی رسیدن را نشان می‌دهد.

می‌توانید رؤیت‌پذیری سرصفحه و پانویس پیمایش را تغییر دهید و رنگ‌های آن را به‌صورت برنامه‌نویسی‌شده بااستفاده از ویژگی‌های زیر تنظیم کنید:

نمونه کد زیر نحوه روشن کردن نمایان بودن سرصفحه و پاصفحه، سپس تنظیم navigationHeaderPrimaryBackgroundColor روی آبی، و navigationHeaderSecondaryBackgroundColor روی قرمز را نشان می‌دهد.

Swift

mapView.settings.isNavigationHeaderEnabled = true
mapView.settings.isNavigationFooterEnabled = true
mapView.settings.navigationHeaderPrimaryBackgroundColor = .blue
mapView.settings.navigationHeaderSecondaryBackgroundColor = .red

آبجکتیو-سی

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)

آبجکتیو-سی

@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 حالت روشنایی پیشنهادی را براساس زمان روز و مکان فعلی دستگاه محاسبه می‌کند و وقتی حالت پیشنهادی تغییر می‌کند (مثلاً هنگام طلوع یا غروب آفتاب)، روش شنونده GMSNavigatorListener.didChangeSuggestedLightingMode را فراخوانی می‌کند. می‌توانید رفتار حالت نور کم را به‌صورت برنامه‌نویسی‌شده به روش‌های زیر تغییر دهید:

فهرست مسیرها

می‌توانید در برنامه‌تان مسیر گام‌به‌گام ارائه دهید. مثال زیر یک روش ممکن برای انجام این کار را نشان می‌دهد. این مراحل ممکن است بسته به پیاده‌سازی شما متفاوت باشد.

  1. دکمه نقطه ورودی را پس‌از اینکه setDestinations در GMSNavigator (ناوبر) با موفقیت تکمیل شد و guidanceActive در ناوبر فعال شد، فعال کنید.
  2. وقتی کاربر روی دکمه نقطه ورودی تک‌ضرب می‌زند، GMSNavigationDirectionsListController (کنترل‌کننده) را با راهبری مرتبط با GMSMapView (mapView) ایجاد کنید.
  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()
  })
  ...
}

آبجکتیو-سی

- (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

آبجکتیو-سی

mapView.settings.navigationTripProgressBarEnabled = YES;

جای نوار پیشرفت سفر

  • سمت چپ نوار تقریباً با سمت چپ سرعت‌سنج، نشان‌واره Google، و دکمه «مرکز کردن مجدد» (وقتی نمایان باشد) تراز می‌شود. عرض ۱۲ نقطه است.
  • نوار پیشرفت سفر به‌طور پویا به فضای عمودی روی صفحه‌نمایش پاسخ می‌دهد. پایین نوار در فاصله ۲۱۰ نقطه‌ای از پایین صفحه‌نمایش قرار دارد. بالای نوار پیشرفت سفر حداقل ۱۷۰ نقطه از بالای صفحه‌نمایش فاصله دارد و حداکثر ارتفاع نوار ۴۰۰ نقطه است.
  • اگر نوار پیشرفت سفر با سرصفحه پیمایش یا دیگر عناصر میانای کاربر پیمایش هم‌پوشانی داشته باشد، زیر آن عناصر دیگر نشان داده می‌شود.

Prompt Visibility API (آزمایشی)

Prompt Visibility API به شما امکان می‌دهد با افزودن شنونده‌ای برای دریافت فراخوانی برگشتی قبل‌از اینکه عنصر میانای کاربر Navigation SDK ظاهر شود و به‌محض اینکه عنصر برداشته شد، از تداخل بین عناصر میانای کاربر تولیدشده توسط Navigation SDK و عناصر میانای کاربر سفارشی خودتان جلوگیری کنید. برای اطلاعات بیشتر، ازجمله نمونه‌های کد، به بخش Prompt Visibility API در صفحه پیکربندی اختلالات بی‌درنگ مراجعه کنید.

کنترل سرعت‌سنج

وقتی پیمایش فعال باشد و حالت سفر روی رانندگی تنظیم شده باشد، Navigation SDK for iOS کنترل محدودیت سرعت را در گوشه پایین نقشه نمایش می‌دهد که محدودیت سرعت فعلی را نشان می‌دهد. وقتی راننده از حد مجاز سرعت فراتر می‌رود، کنترل ازهم باز می‌شود تا سرعت‌سنج دومی را با سرعت فعلی راننده نمایش دهد.

می‌توانید سطوح هشدار را تنظیم کنید تا قالب‌بندی نمایش سرعت‌سنج را تغییر دهید وقتی راننده از حد مجاز سرعت به مقدار مشخصی فراتر می‌رود. برای مثال، می‌توانید مشخص کنید که وقتی راننده ۵ مایل در ساعت از حد مجاز سرعت فراتر می‌رود، سرعت فعلی با نوشتار قرمز نمایش داده شود و وقتی راننده ۱۰ مایل در ساعت از حد مجاز سرعت فراتر می‌رود، با رنگ پس‌زمینه قرمز نمایش داده شود.

برای نمایش کنترل محدودیت سرعت، ویژگی shouldDisplaySpeedometer GMSUISettings را روی true تنظیم کنید. برای غیرفعال کردن نمایش کنترل محدودیت سرعت، shouldDisplaySpeedometer را روی false تنظیم کنید.

Swift

mapView.settings.shouldDisplaySpeedometer = true

آبجکتیو-سی

mapView.settings.shouldDisplaySpeedometer = YES;

برای اطلاعات بیشتر درباره تنظیم هشدار برای سرعت‌سنج، به پیکربندی هشدارهای سرعت‌سنج مراجعه کنید.

نشانگرهای مقصد

می‌توانید نشانگرهای مقصد را برای مسیر مشخصی با تنظیم کردن ویژگی showsDestinationMarkers GMSUISettings نشان دهید یا پنهان کنید. مثال زیر نحوه خاموش کردن نشانگرهای مقصد را نشان می‌دهد.

Swift

mapView.settings.showsDestinationMarkers = false

آبجکتیو-سی

mapView.settings.showsDestinationMarkers = NO;

ویژگی‌های تجربه نقشه

کیت توسعه نرم‌افزار ناوبری به شما امکان می‌دهد سفارشی‌سازی‌های بیشتری را در تجربه ناوبری برای کاربران خود انجام دهید. تغییراتی که در نمونه‌تان ایجاد می‌کنید در به‌روزرسانی بعدی برنامه شما توسط کاربر منعکس می‌شود.

برجسته‌سازی مقصد و ورودی‌ها

برجسته‌سازی مقصد و ورودی‌ها

وقتی مقصدی با 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

آبجکتیو-سی

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

آبجکتیو-سی

/* 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
  ...
}

آبجکتیو-سی

GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithAlternateRoutesStrategy:GMSNavigationAlternateRoutesStrategyNone];
[navigator setDestinations:destinations
            routingOptions:routingOptions
                  callback:^(GMSRouteStatus routeStatus){...}];