MKPolygonRenderer создает различную визуальную ширину линии, используя одно и то же значение lineWidth

Если вы используете 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()
}

Это визуальный результат для разных полигонов:

0 ответов

Другие вопросы по тегам