毎秒 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 日間、すべてを必死に試しました。
ありがとう..