折线drawMapRect优化绘图

Tem*_*lar 5 mkmapview ios mkmaprect mkoverlaypathrenderer

我在地图上有很多长折线.我想优化他们的绘图,因为在几千点处,折线被绘制得非常慢.

drawMapRect看起来像这样:

- for each polyline segment 
- verify if it's bounding box intersects the currently drawn MKMapRect
- if id does, draw it
Run Code Online (Sandbox Code Playgroud)

如果没有太多分数,哪个很好.但是当有8-16个可见的地图和2-3000个点时,它们的速度非常慢for.

如果它们只是位置,那么解决方案就是实现某种四叉树/ r树结构,只过滤当前绘制的那些位置MKMapRect,但我不确定这是否适合折线本身.

如果我仅过滤当前maprect内的段端点,则可能不会绘制某些线段.例如,1-2点之间的两个红色maprects中没有段端点,但仍然需要绘制...

在此输入图像描述

是否有某种算法类似于四叉树或某种方法来解决这个问题?

Rei*_*ner 0

不幸的是,我不知道\xe2\x80\x99 不知道这样的数据结构可以允许检查线与矩形的相交。
\n但是,解决该问题的一种方法可能如下:
\n在分辨率非常低的地图(2 维数组)中绘制所有折线,并记下绘制它的折线的每个像素。然后在此低分辨率地图中扫描绘制像素的相关矩形,并存储所有相关的折线。然后可以在全分辨率地图中绘制这些。
\n也许这个近似算法比您现在使用的精确算法更快。

\n\n

编辑:

\n\n

我假设您使用折线 MKMapRect 交集检查有效的算法,例如如何找到直线和矩形之间的交点?

\n