在自定义路线多段线(或标记)之前,您需要先初始化界面自定义选项。
初始化界面自定义选项
GMTCMapViewDelegate
中声明了用于初始设置界面自定义选项的推荐回调。当 GMTCMapView
对象准备好渲染地图时,系统会触发 mapViewDidInitialize
回调。样式协调程序已初始化,但没有界面元素。
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:)
自定义表示每种速度分类的颜色。