تخصيص الخطوط المتعددة للمسار

اختيار النظام الأساسي: Android‏ iOS‏ JavaScript‏

قبل تخصيص الخطوط المتعدّدة للمسار (أو العلامات)، عليك أولاً إعداد خيارات تخصيص واجهة المستخدم.

بدء خيارات تخصيص واجهة المستخدم

يتم الإعلان عن دالة ردّ الاتصال المقترَحة المستخدَمة لضبط خيارات تخصيص واجهة المستخدم في البداية في GMTCMapViewDelegate. يتم تشغيل دالة ردّ الاتصال mapViewDidInitialize عندما يكون العنصر GMTCMapView جاهزًا لعرض الخريطة. تمت تهيئة منسق الأنماط، ولكن لا توجد عناصر في واجهة المستخدم.

Swift

/** ViewController.swift */

class ViewController: UIViewController, GMTCMapViewDelegate {

  // MARK: - GMTCMapViewDelegate

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

Objective-C

/** 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" PolylineOptions. تتضمّن سمات حزمة تطوير البرامج (SDK) للمستهلك 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)
}

Objective-C

/** 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:).