在MKMapView上使用不同的笔画/颜色绘制两个MKPolyline,可以通过以下步骤实现:
mapView(_:rendererFor:)
中,根据传入的overlay参数判断是哪个MKPolyline对象,然后返回对应的MKPolylineRenderer对象。以下是示例代码:
import MapKit
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
// 设置地图视图的代理
mapView.delegate = self
// 创建两个MKPolyline对象
let coordinates1 = [CLLocationCoordinate2D(latitude: 40.7128, longitude: -74.0060),
CLLocationCoordinate2D(latitude: 34.0522, longitude: -118.2437)]
let polyline1 = MKPolyline(coordinates: coordinates1, count: coordinates1.count)
let coordinates2 = [CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194),
CLLocationCoordinate2D(latitude: 47.6062, longitude: -122.3321)]
let polyline2 = MKPolyline(coordinates: coordinates2, count: coordinates2.count)
// 添加两个MKPolyline对象到地图视图
mapView.addOverlay(polyline1)
mapView.addOverlay(polyline2)
}
// MKMapViewDelegate方法:返回MKPolylineRenderer对象
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if let polyline = overlay as? MKPolyline {
// 创建MKPolylineRenderer对象
let renderer = MKPolylineRenderer(polyline: polyline)
// 判断是哪个MKPolyline对象,设置对应的笔画/颜色
if polyline === polyline1 {
renderer.strokeColor = .red
renderer.lineWidth = 3
} else if polyline === polyline2 {
renderer.strokeColor = .blue
renderer.lineWidth = 2
}
return renderer
}
return MKOverlayRenderer()
}
}
在上述代码中,我们创建了两个MKPolyline对象,分别表示两条线段。然后在mapView(_:rendererFor:)
方法中,根据传入的overlay参数判断是哪个MKPolyline对象,然后返回对应的MKPolylineRenderer对象,并设置不同的笔画/颜色。
注意:以上代码仅为示例,实际使用时需要根据具体需求进行适当修改。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云