Can any help me with making custom MKPolyline
with additional argument Color?
CustomPolyline.swift
import Foundation
im
It can be done much more simpler than I throught:
Class
import Foundation
import MapKit
class CustomPolyline : MKPolyline {
var color: String?
}
Init
cPolyline = CustomPolyline(coordinates: &Path, count: Path.count)
cPolyline.color = "#ff0000"
self.mapView.addOverlay(cPolyline)
func mapView(mapView: MKMapView!, rendererForOverlay overlay: CustomPolyline!) -> MKOverlayRenderer! {
var pr = MKPolylineRenderer(overlay: overlay);
pr.strokeColor = UIColor(rgba: overlay.color);
pr.lineWidth = 10;
return pr;
}
Another solution most easy:
extension UIColor {
static var rendererColor: UIColor {
return UIColor(red: 65/255, green: 65/255, blue: 65/255, alpha: 1)
}
}
And the use:
renderer.strokeColor = UIColor.renderer
As user3470987 pointed out, there might be an issue in modifying the default 'rendererForOverlay' delegate function. It could also prove difficult if you'd like to add overlays of other types than MKPolyline.
Class
import Foundation
import MapKit
class Polyline: MKPolyline {
var color: UIColor?
}
Render function
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if let polyline = overlay as? Polyline {
let polylineRenderer = MKPolylineRenderer(overlay: polyline)
polylineRenderer.strokeColor = polyline.color
polylineRenderer.lineWidth = 3
return polylineRenderer
}
return MKOverlayRenderer(overlay: overlay)
}