4

iOS 6 にアップデートした後、複数のオーバーレイを使用して MKMapView をパンまたはズームすると、サーバーのパフォーマンスが低下することに気付きました。私が作成したアプリには、さまざまな色の約 600 のポリゴン オーバーレイがあり、iOS 5 ではラグなしで (古い iOS デバイスでも) 実行されましたが、iOS 6 では、最新のデバイスでも (ズームとパンの場合) 非常にラグリーに実行されます。

私の推測では、これは、デバイスがタイルを画面上に表示するだけでなく、実際にマップを動的に作成する必要があるためです (ベクトル ベースであるため)。

マップをパンまたはズームするときに発生するラグを減らすためのアイデアはありますか?

追加情報として、この低フレーム レートは、オーバーレイが画面にまったく表示されない領域をズームまたはパンしているときにも発生するため、画面に表示されるオーバーレイの作成とは関係ありません。

4

2 に答える 2

1

すべてのオーバーレイを 1 つのオーバーレイに結合してみることができます。これにより、パフォーマンスが大幅に向上します。

アイデアは、すべてのポリゴンを包含するバウンディング ボックスでオーバーレイを作成することです。このようにして、あなたmapView: viewForOverlayは常に呼び出されます。すべてのポリゴンを保持するオーバーレイのプロパティを作成します。次に、drawMapRect:オーバーレイ ビューのメソッドで、すべてのポリゴンの交差をテストしmapRect、必要に応じて描画します。画面外のポリゴンを描画したくないため、これは重要です。

この戦略は、Apple 独自の MapKit サンプル プロジェクトに基づいています。単一の MKOverlayView で複数のオブジェクトを描画する例については HazardMap を確認しメソッドで現在のポリゴンと交差するポリゴンを効率的にテストする方法の例についてはBreadCrumbを確認してください。mapRectdrawMapRect

于 2012-12-12T20:39:18.810 に答える