سفارشی‌سازی چندخطی‌های مسیر

پلاتفرم را انتخاب کنید: Android iOS JavaScript

قبل‌از سفارشی‌سازی کردن چندخطی‌های مسیر (یا نشانگرها)، ابتدا باید گزینه‌های سفارشی‌سازی واسط کاربر را مقداردهی اولیه کنید.

مقداردهی اولیه گزینه‌های سفارشی‌سازی واسط کاربر

فراخوانی توصیه‌شده که برای تنظیم اولیه گزینه‌های سفارشی‌سازی واسط کاربر استفاده می‌شود در GMTCMapViewDelegate اعلام شده است. وقتی شیء GMTCMapView برای ارائه نقشه آماده باشد، فراخوانی برگشتی mapViewDidInitialize راه‌اندازی می‌شود. هماهنگ‌کننده سبک مقداردهی اولیه شده است، اما هیچ عنصر میانای کاربری وجود ندارد.

Swift

/** ViewController.swift */

class ViewController: UIViewController, GMTCMapViewDelegate {

  // MARK: - GMTCMapViewDelegate

  func mapViewDidInitialize(_ mapview: GMTCMapView) {
    // Set the UI customization options here.
  }
}

آبجکتیو-سی

/** ViewController.m */

@interface ViewController () <GMTCMapViewDelegate>

#pragma mark GMTCMapViewDelegate

- (void)mapViewDidInitialize:(GMTCMapView *)mapview {
  // Set the UI customization options here.
}

سفارشی‌سازی چندخطی‌ها

سفارشی‌سازی چندخطی بااستفاده از GMTCConsumerMapStyleCoordinator#setPolylineStyleOptions(_:polylineType:) تنظیم می‌شود.

مثال زیر نحوه تنظیم گزینه‌های سبک چندخطی را نشان می‌دهد:

انواع چندخطی

می‌توانید انواع چندخطی زیر را سفارشی‌سازی کنید:

  • GMTCPolylineType.activeRoute: مسیری که خودرو برای رسیدن به نقطه بعدی مسافر طی می‌کند، خواه نقطه سوار کردن باشد یا نقطه پیاده کردن.
  • GMTCPolylineType.remainingRoute: بخشی از سفر که پس‌از تکمیل GMTCPolylineType.activeRoute توسط خودرو باقی می‌ماند.

هر دو نوع درطول سفر هم‌رسانی‌شده نمایش داده می‌شوند.

ویژگی‌های چندخطی

ویژگی‌هایی که می‌توانید برای هر چندخطی سفارشی‌سازی کنید زیرمجموعه‌ای از ویژگی‌های ارائه‌شده در Google Maps PolylineOptions است. ویژگی‌های GMTCPolylineStyleOptions «کیت توسعه نرم‌افزار مصرف‌کننده» دارای مشخصه‌های زیر است:

  • ساخته‌شده بااستفاده از مقداردهنده اولیه.
  • اگر می‌خواهید مقادیر سفارشی برای هر ویژگی ارائه دهید، می‌تواند تغییرناپذیر یا تغییرپذیر باشد.
  • مقادیر پیش‌فرض داشته باشد.

می‌توانید ویژگی‌های زیر را سفارشی‌سازی کنید:

  • color
  • width
  • isVisible: برای غیرفعال کردن چندخطی، isVisible را روی false تنظیم کنید.
  • isTrafficEnabled: این ویژگی به‌طور پیش‌فرض روی false تنظیم شده است.

مثال

Swift

/** MapViewController.swift */

private func updatePolylineUIOptions() {
  // Get the GMTCConsumerMapStyleCoordinator
  let consumerMapStyleCoordinator = mapView.consumerMapStyleCoordinator

  // The polyline type that you would like to set custom UI options for.
  let customizablePolylineType = GMTCPolylineType.activeRoute

  // Initializing polyline options with default values (immutable version).
  let polylineStyleOptions = GMTCPolylineStyleOptions()
  consumerMapStyleCoordinator.setPolylineStyleOptions(
    polylineStyleOptions, polylineType: customizablePolylineType)

  // Initializing polyline options with custom values (mutable version).
  let mutablePolylineStyleOptions = GMTCMutablePolylineStyleOptions()
  mutablePolylineStyleOptions.isVisible = true
  mutablepolylineStyleOptions.strokeWidth = 8.0
  mutablepolylineStyleOptions.strokeColor = .blue
  mutablepolylineStyleOptions.zIndex = 1000
  mutablepolylineStyleOptions.isGeodesic = true
  mutablePolylineStyleOptions.isTrafficEnabled = true
  mutablePolylineStyleOptions.setTrafficColorFor(.slow, color: .yellow)
  mutablePolylineStyleOptions.setTrafficColorFor(.trafficJam, color: .purple)
  consumerMapStyleCoordinator.setPolylineStyleOptions(
    mutablePolylineStyleOptions, polylineType: customizablePolylineType)

  // Reset polyline options to default values.
  consumerMapStyleCoordinator.setPolylineStyleOptions(
    nil, polylineType: customizablePolylineType)
}

آبجکتیو-سی

/** MapViewController.m */

- (void)updatePolylineUIOptions {
  // Get the GMTCConsumerMapStyleCoordinator
  GMTCConsumerMapStyleCoordinator *consumerMapStyleCoordinator = [_mapView consumerMapStyleCoordinator];

  // The polyline type that you would like to set custom UI options for.
  GMTCPolylineType customizablePolylineType = GMTCPolylineTypeActiveRoute;

  // Initializing polyline options with default values (immutable version).
  GMTCPolylineStyleOptions *polylineStyleOptions = [[GMTCPolylineStyleOptions alloc] init];
  [consumerMapStyleCoordinator setPolylineStyleOptions:polylineStyleOptions
                               polylineType:customizablePolylineType];

  // Initializing polyline options with custom values (mutable version).
  GMTCMutablePolylineStyleOptions *mutablePolylineStyleOptions = [[GMTCMutablePolylineStyleOptions alloc] init];
  mutablePolylineStyleOptions.isVisible = YES;
  mutablepolylineStyleOptions.strokeWidth = 8.0;
  mutablepolylineStyleOptions.strokeColor = [UIColor blueColor];
  mutablepolylineStyleOptions.zIndex = 1000;
  mutablepolylineStyleOptions.isGeodesic = YES;
  mutablePolylineStyleOptions.isTrafficEnabled = YES;
  [mutablePolylineStyleOptions setTrafficColorForSpeed:GMTSSpeedTypeSlow color:[UIColor yellowColor]];
  [mutablePolylineStyleOptions setTrafficColorForSpeed:GMTSSpeedTypeTrafficJam color:[UIColor purpleColor]];
  [consumerMapStyleCoordinator setPolylineStyleOptions:mutablePolylineStyleOptions
                                          polylineType:customizablePolylineType];

  // Reset polyline options to default values.
  [consumerMapStyleCoordinator setPolylineStyleOptions:nil
                                          polylineType:customizablePolylineType];
}

چندخطی‌های آگاه از ترافیک

لایه ترافیک چندخطی به‌طور پیش‌فرض غیرفعال است. وقتی آن را بااستفاده از polylineStyleOptions.isTrafficEnabled = true فعال می‌کنید، بخش‌هایی که نشان‌دهنده ترافیک غیرعادی هستند به‌عنوان مسیر ترسیم می‌شوند.

شرایط ترافیک به‌صورت یکی از چهار سرعت زیر نشان داده می‌شود:

  • GMTSSpeedType.noData
  • GMTSSpeedType.normal
  • GMTSSpeedType.slow
  • GMTSSpeedType.trafficJam

بااستفاده از setTrafficColorFor(_:color:) می‌توانید رنگی را که نشان‌دهنده هرکدام از آن طبقه‌بندی‌های سرعت است سفارشی‌سازی کنید.