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 日間、すべてを必死に試しました。

ありがとう..

4

0 に答える 0