如何修复在MKPolyline渲染中出现的裂缝

问题描述 投票:0回答:1

渲染MKPolyline时,我面临裂缝问题。有没有办法控制折线的Z(就像我们在游戏开发中使用Z偏向那样)或其他任何技术?

GPS realtime rendering

我相信我的代码相当标准,如下:

public func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    if overlay is MKPolyline {
        let renderer = MKPolylineRenderer(overlay: overlay)

        // Some code where I define thickness and color

        renderer.strokeColor    = color
        renderer.lineWidth      = CGFloat(thickness)

        return renderer
    }

    return MKOverlayRenderer(overlay: overlay)
}
swift mkmapview ios13 mkpolyline mkpolylinerenderer
1个回答
0
投票

[(a)您的MKPolyline具有两个以上的坐标,但是(b)某些点重复和/或路径重新回到其自身,您会得到怪异的效果。

例如,这是A点和B点之间的MKPolyline

enter image description here

这里是从A点到B点再到C点:

enter image description here

但是,如果您从A点到B点,然后又回到A点,都在一个MKPolyline中,您会得到奇怪的伪像:

enter image description here

问题的确切表现可能有所不同(在本例中,通常是在连接点本身,在点B处,但是想法是相同的。

并且,顺便说一句,坐标不必彼此重复,但是任何共线的,加倍的坐标都可能遭受此问题的困扰。 (例如,您有MKPolyline从A点到B点,再到C点,C点恰好在A和B之间。)FWIW,此渲染问题是一般的UIBezierPath问题,并非唯一MKPolyline

您可以通过确保自己没有重复出现的路径或将其渲染为单独的路径来解决此问题(当然,请确保lineCaplineCap)。


所有这些,您的某些路径看起来可能是单独的.round,每个路径只有两个坐标。如果是这种情况,请确保您的MKPolylinelineCap

© www.soinside.com 2019 - 2024. All rights reserved.