gpt4 book ai didi

ios - MapKit - 更改 MKPolyline 的颜色/描边

转载 作者:行者123 更新时间:2023-11-28 09:03:14 31 4
gpt4 key购买 nike

我已经使用以下代码向我的 map 添加了一个叠加层:

func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
if overlay.isKindOfClass(MKPolyline) {
// draw the track

let polyLine = overlay as! MKPolyline
let polyLineRenderer = MKPolylineRenderer(overlay: polyLine)
polyLineRenderer.strokeColor = UIColor.blueColor()
polyLineRenderer.lineWidth = 2.0
return polyLineRenderer
}

return nil
}

现在我想改变这条折线的颜色或线宽。
我发现这样做的唯一方法是:

func randomMethod()
{
...// find aPolyline
self.myOverlay = aPolyLine
self.map.removeOverlay(self.myOverlay)
self.map.addOverlay(self.myOverlay)
}

在 mapView renderForOverLay 方法上添加了这个:

if (polyLine == self.myOverlay)
{
polyLineRenderer.strokeColor = UIColor.redColor()
polyLineRenderer.lineWidth = 5.0
}else{
polyLineRenderer.strokeColor = UIColor.blueColor()
polyLineRenderer.lineWidth = 2.0
}

一定有比移除叠加层再重新添加更好的方法。
你知道其他方法吗?

最佳答案

我认为这不是最好的解决方案,但我找到了一种无需删除/添加叠加层即可执行此操作的方法。

我在我的 randomMethod() 上以这种方式保留对 let polyLineRenderer = MKPolylineRenderer(overlay: polyLine) 的引用我可以更改我需要的属性(stroke,lineWidth ) 然后只需在该多段线的渲染器上执行 setNeedsDisplay()

这比其他方法更糟糕吗?可能是..我必须添加一个结构来存储渲染器,但这是我发现的唯一方法......

关于ios - MapKit - 更改 MKPolyline 的颜色/描边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31568622/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com