2016-07-20 6 views
0

私はカスタムMKOverlayRendererを持っています。最初の領域が変更された後(デフォルトの場所からユーザーの場所に移動するとき)、MKMapViewにMKOverlay(カスタム)も追加します。レンダリング速度はかなり遅かったので、関数呼び出しを記録しました。drawMapRectの頻度:zoomScale:inContext:呼び出されるはずですか?

2016-07-20 14:03:21.486 MyApp[360:38679] mapView:regionDidChangeAnimated: 
2016-07-20 14:03:22.351 MyApp[360:38679] addOverlay:level: 
2016-07-20 14:03:22.353 MyApp[360:38679] mapView:rendererForOverlay: 
2016-07-20 14:03:22.460 MyApp[360:38709] drawMapRect:zoomScale:inContext: 
2016-07-20 14:03:22.460 MyApp[360:38706] drawMapRect:zoomScale:inContext: 
2016-07-20 14:03:22.501 MyApp[360:38709] drawMapRect:zoomScale:inContext: 
2016-07-20 14:03:22.504 MyApp[360:38706] drawMapRect:zoomScale:inContext: 
2016-07-20 14:03:22.504 MyApp[360:38707] drawMapRect:zoomScale:inContext: 
2016-07-20 14:03:22.560 MyApp[360:38707] drawMapRect:zoomScale:inContext: 
2016-07-20 14:03:22.562 MyApp[360:38709] drawMapRect:zoomScale:inContext: 
2016-07-20 14:03:22.582 MyApp[360:38713] drawMapRect:zoomScale:inContext: 

これはデバイスには触れていません。 drawMapRect:zoomScale:inContextはこのように繰り返し呼び出されるはずですか?

+0

@mattこれは典型的ではないと確信していますか?私のアプリケーションには、HTTP要求が返ってから二次スレッドで実行される少量のコードがありますが、すべてのGUI関連は 'dispatch_async(dispatch_get_main_queue()、^ {}) 'ブロック内にあります。 – DaiBu

+0

確かに、私は間違っている可能性があります。 「遅れ」はどこかにある可能性があります。インストゥルメントを使って確認することができます。 – matt

+0

@mattあなたは答えたのと同じ男です。笑。ええ、私は、OSがそれ自身の上で複数のスレッドを使用していると思います。私は関数によって提供されたMKMapRectにレンダリングをクリップしましたが、今は速いです。私はオーバーレイをカスタマイズする方法を学ぶのに最後の4-6時間を後悔し始めました。今はそれが払いのけます。ありがとう。 – DaiBu

答えて

0

drawMapRect:zoomScale:inContextはこのように繰り返し呼び出されるはずですか?

はい。可視の地図はタイルで構成されています。 drawMapRect:zoomScale:inContext:は、タイルごとに1回呼び出されます(実装で実際に入力されたrectパラメータを確認すると分かります)。

+0

ああ、つまらない!ええ、今は気が狂っています。私は通常、オーバーライドを使用する前に、すべてのパラメータを理解することについてかなり良いです。私はちょうどこのプロジェクトで少し急いでいる。彼のOPコメントにmattが示唆するようなスレッディング問題がないことを確認してから、これにチェックマークを付けます。ありがとう。 – DaiBu

関連する問題