قبل از اینکه خطوط چندخطی مسیر (یا نشانگرها) را سفارشی کنید، ابتدا باید گزینههای سفارشیسازی رابط کاربری را مقداردهی اولیه کنید.
گزینههای سفارشیسازی رابط کاربری را مقداردهی اولیه کنید
تابع فراخوانی پیشنهادی که برای تنظیم اولیه گزینههای سفارشیسازی رابط کاربری استفاده میشود، در 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:) رنگ نمایشدهندهی هر یک از این طبقهبندیهای سرعت را سفارشی کنید.