私はマップ上に長いポリラインをたくさん持っています。 数千点でポリラインが非常に遅く描画されるため、図面を最適化したいと思います。このようなポリラインdrawMapRect最適化された図面
マイdrawMapRect
ルックス:
- for each polyline segment
- verify if it's bounding box intersects the currently drawn MKMapRect
- if id does, draw it
。しかし、8-16の地図修正と2-3000ポイントがあるとき、彼らはfor
を通って信じられないほど遅いです。
もしそれらが唯一の場所になるのであれば、ある種のquadtree/r-tree構造を実装し、現在描画されている場所にフィルタをかけることになりますが、それが適切かどうかは分かりませんポリラインそのもの。
現在のmaprect内のセグメントエンドポイントのみをフィルタリングすると、一部の線分が描画されないことがあります。例えば、ポイント1-2間の2つの赤いmaprectsは、それらには、セグメントのエンドポイントを持っていないが、それでも描画する必要があります...
は四分木に似たアルゴリズムのいくつかの種類またはのためのアプローチのいくつかの種類がありますこの問題 ?
これ以外のものが見つからない場合は試してみましょう。現在、それぞれのセグメントについて、境界のあるマップ修正を計算し、現在描画されている修正とのmkmparect交差点/包含をチェックします。 – Templar