我有每秒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,我真的很喜欢..我绝望地尝试了过去四天的一切。
谢谢..