渲染MKPolyline时,我面临裂缝问题。有没有办法控制折线的Z(就像我们在游戏开发中使用Z偏向那样)或其他任何技术?
我相信我的代码相当标准,如下:
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)
}
[(a)您的MKPolyline
具有两个以上的坐标,但是(b)某些点重复和/或路径重新回到其自身,您会得到怪异的效果。
例如,这是A点和B点之间的MKPolyline
:
这里是从A点到B点再到C点:
但是,如果您从A点到B点,然后又回到A点,都在一个MKPolyline
中,您会得到奇怪的伪像:
问题的确切表现可能有所不同(在本例中,通常是在连接点本身,在点B处,但是想法是相同的。
并且,顺便说一句,坐标不必彼此重复,但是任何共线的,加倍的坐标都可能遭受此问题的困扰。 (例如,您有MKPolyline
从A点到B点,再到C点,C点恰好在A和B之间。)FWIW,此渲染问题是一般的UIBezierPath
问题,并非唯一MKPolyline
。
您可以通过确保自己没有重复出现的路径或将其渲染为单独的路径来解决此问题(当然,请确保lineCap
为lineCap
)。
所有这些,您的某些路径看起来可能是单独的.round
,每个路径只有两个坐标。如果是这种情况,请确保您的MKPolyline
为lineCap
。