Это мое первое приближение решения вашей проблемы.
Первая проблема заключается в том, что airports
представляется глобальным списком или другой глобальной итерируемой.При любом вызове mapView
он будет генерировать circle
и выполнять итерацию по airports
, изменяя атрибуты circle
один раз для каждого элемента в airports
.То есть, вы будете видеть одно и то же поведение каждый раз, когда вызывается mapView
.
Что вы должны сделать, это сначала обновить определение вашей функции, включив в нее markerType
и remove итерацию:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay, markerType: String) -> MKOverlayRenderer {
if overlay is MKCircle {
let circle = MKCircleRenderer(overlay: overlay)
if markerType == "airport" {
circle.strokeColor = UIColor.red
circle.fillColor = UIColor(red: 255, green: 0, blue: 0, alpha: 0.1)
circle.lineWidth = 1
} else {
circle.strokeColor = UIColor.black
circle.fillColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.1)
circle.lineWidth = 1
}
return circle
} else {
return MKPolylineRenderer()
}
}
Затем, по вызову mapView
, введите маркер этого аэропортаТип:
mapView.add(circle,coordinate.markerType)