我需要显示一个圆和多边形的地图,每个圆或多边形可能是不同的颜色。
我最初的计划是对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/