架空の飛行機が空港を発着する様子を表示したいアプリを開発しています。マップ上を飛行することを表現したいのはこれだけではないかもしれません。
このために、LocationReminders (彼らが持っている MKOverlayPathView サブクラス、ReminderCircleView) のサンプル コードを使用し、平面を表す独自の MKOverlay に接続しました。このクラスは、オーバーレイ クラスの座標と半径のプロパティで KVO 通知をサブスクライブし、更新があるたびにそのパスを無効にします。
オーバーレイは 1 秒あたり数フレームで位置を更新し、半径も更新して遠近法をシミュレートできるようにします (モデル オブジェクトであることを考えるとあまりスマートではありませんが、それでも私が見つけた最良のソリューションです)。
テスト用に単純な円パスを使用しています。
この設定はうまくいきます。オーバーレイ ビューが更新され、正しく動作し、マップなどに合わせてスケーリングされます。
問題は、シミュレートされたフライトでは、オーバーレイが一部のタイル (通常は目的地の近く) に描画されないことです。円はこれらのタイルの背後にあるように見えます。
この問題で 1 つのことを理解できました。ズームアウトすると、円が一部のタイルに描画されていないのを観察するたびに、円が正しく描画されます。ただし、ズームインまたはパンしても何も解決しません。
私の理論では、一部のタイル (またはそれらのマップの四角形) は再描画用にマークされていないため、ズームアウトすることによってのみ強制できます。しかしそれでも、ズームインが役に立たないように見えるという事実とは一致しないと思います.
何か間違ったことをしているのか、それともバグか何かにぶつかっているのかわかりません。代わりに注釈を使用しましたが、機能していましたが、ズームスケールを自分で観察せずにズームアウトすると、平面を表すことができなくなります。
バージョン 5.1、6.0、および 6.1 でテストしましたが、動作は同じです。