我需要显示一个圆和多边形的地图,每个圆或多边形可能是不同的颜色。
我最初的计划是对MKCircle和MKPolygon进行子类划分,并为我的Region类添加一个实例变量(该类具有决定地图上形状颜色的信息),但这两个类都不可能进行子类划分
有什么想法吗?
以下是我目前掌握的情况:

// draw the regions
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    if overlay is MKCircle {
        // display circles on the map
        let circle = MKCircleRenderer(overlay: overlay)


        circle.strokeColor = UIColor.red // THIS SHOULD BE CONDITIONAL (sometimes red, sometimes green -> depends on a class that I have called region)
        circle.fillColor = UIColor(red: 255, green: 0, blue: 0, alpha: 0.1)
        circle.lineWidth = 1
        return circle
    } else if overlay is MKPolygon {
        // display polygons on the map
        let poly = MKPolygonRenderer(overlay: overlay)
        poly.strokeColor = UIColor.red // THIS SHOULD BE CONDITIONAL (sometimes red, sometimes green -> depends on a class that I have called region)
        poly.fillColor = UIColor(red: 255, green: 0, blue: 0, alpha: 0.1)
        poly.lineWidth = 1
        return poly
    } else {
        return MKPolylineRenderer()
    }
}

最佳答案

您说您不能将MKCircle或MKPolygon子类化,因此无法将与此覆盖相关联的额外信息传递到overlay参数中的delegate方法中。
但您可以做的是编写自己的NSObject子类,该子类符合MKOverlay协议。现在您可以添加任何您喜欢的实例属性。为了简单起见,MKOverlay采用程序本身可以包装MKCircle或MKPolygon,但实际上并不需要这样做。

关于ios - 在iOS中的 map 上有条件地为MKCircle着色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49368877/

10-10 21:05