Если x
и y
являются свойствами вашего View Controller, вы можете ссылаться на них, как на любую переменную в методе рендерера:
extension ViewController {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKPolyline {
let renderer = MKPolylineRenderer(overlay: overlay)
renderer.strokeColor = x == y ? UIColor.blue : UIColor.green
renderer.lineWidth = 3
return renderer
}
return MKOverlayRenderer(overlay: overlay)
}
Если x
и y
являются конкретнымик каждому оверлею нужно подкласс MKPolyline
:
class MyPolyline: MKPolyline {
// Initialize them specific to your needds
var x = 0
var y = 0
}
extension ViewController {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
guard let overlay = overlay as? MyPolyline else {
return MKOverlayRenderer(overlay: overlay)
}
let renderer = MKPolylineRenderer(overlay: overlay)
// You can also add a strokeColor as a computed property to the MyPolyline class
renderer.strokeColor = overlay.x == overlay.y ? UIColor.blue : UIColor.green
renderer.lineWidth = 3
return renderer
}
}