4

我有每秒 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 的,我也会非常感激。在过去的四天里,我绝望地尝试了一切。

谢谢..

4

0 回答 0