我有每秒 25 行的传入数据。每条线都有 GPS 数据和高度数据。这些线被解析并转换为 mkpolylines 并作为覆盖添加到地图。根据海拔高度,每条折线都有不同的颜色。简单地说,如果飞机在 0 米处,颜色为白色,如果在 2000 米处,则为深红色。我有一个颜色代码数组,高度从该数组中获取相应的颜色代码。
我的代码可以正常工作,但是一旦更改缩放级别并浏览地图,生成的折线颜色就会随着当前高度对应的颜色代码而更改。
我的代码很简单..
这是我用于折线的:
var polyArray : [CLLocationCoordinate2D] = [polyFirstLocation.coordinate,newLocation.coordinate]
var polyLine = MKPolyline()
polyLine = MKPolyline(coordinates: &polyArray, count: 2)
polyLine.title = "planePath"
colorAltitude(parsedData[7].doubleValue)
mapView.addOverlay(polyLine, level: MKOverlayLevel.AboveLabels)
这是我的渲染器:
func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
if overlay is MKPolyline {
var polylineRenderer = MKPolylineRenderer(overlay: overlay)
if overlay.title == "planePath" {
polylineRenderer.strokeColor = NSColor(netHex: cCode)
polylineRenderer.lineWidth = 2
}
return polylineRenderer
}
return nil
}
它有效..这是图像..
但是当我放大到最大级别并浏览并再次缩小时,颜色会更改为我的最后一个颜色代码值。所以不知何故,我需要我的渲染器不要重绘我的折线,或者在重绘时以某种方式保持它们的原始颜色。
我的代码很快,但如果你有一个想法,即使它是使用 obj-C 的,我也会非常感激。在过去的四天里,我绝望地尝试了一切。
谢谢..