سفارشی کردن چند خطوط مسیر

پلتفرم مورد نظر را انتخاب کنید: اندروید، iOS، جاوا اسکریپت

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

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

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

سویفت

/** 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 هستند. ویژگی‌های Consumer SDK GMTCPolylineStyleOptions دارای ویژگی‌های زیر هستند:

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

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

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

مثال

سویفت

/** 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:) رنگ نمایش‌دهنده‌ی هر یک از این طبقه‌بندی‌های سرعت را سفارشی کنید.