如果使用 MKPolygonRenderer 渲染多边形,则会出现一个奇怪的现象。 似乎它使用相同的值呈现不同的线宽。 我知道您可以对渲染器进行子类化,并覆盖如下函数来应用缩放比例:
class CustomPolyline: MKPolylineRenderer {
override func applyStrokeProperties(to context: CGContext,atzoomScale zoomScale: MKzoomScale) {
super.applyStrokeProperties(to: context,atzoomScale: zoomScale)
UIGraphicsPushContext(context)
if let ctx = UIGraphicsgetcurrentContext() {
ctx.setLineWidth(self.lineWidth)
}
}
}
但这不会让我创建线宽如2.0或4.0的线。 您出于某些原因在stackOverflow上找到的所有解决方案都使用奇怪的高数字作为行宽。
有人知道如何解决此问题吗?
这是我设置渲染器的代码:
func mapView(_ mapView: MKMapView,rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if let polygon = overlay as? MKPolygon,polygon != worldPolygon {
let renderer = MKPolygonRenderer(polygon: polygon)
renderer.strokeColor = Colors.secondary300.color
renderer.lineWidth = 2
return renderer
} else if let polygon = overlay as? MKPolygon,polygon == worldPolygon {
let renderer = MKPolygonRenderer(polygon: polygon)
renderer.fillColor = Colors.anthracite.color.withAlphaComponent(0.3)
return renderer
}
return MKOverlayRenderer()
}
这是不同多边形的视觉输出: