缩放操作后,不会绘制出明显的MKMapView叠加层

时间:2014-02-28 15:21:45

标签: ios ios7 mkmapview mkoverlay

我目前正在制作地图功能(大部分代码都是由其他人为此功能开发的。)

我们通过设置mkpolygon对象数组将mkoverlays添加到地图中。这些对象通过从后端接收的jSon接收其多边形坐标。据我检查代码,我们没有覆盖绘制方法。这些对象仅使用其多边形进行初始化并添加到mapView。

我们正在通过这种方法向地图添加线条和多边形,现在有两种行为并不好:

1)如果触摸多边形覆盖,则应更改其颜色 - >但它非常慢 2)如果地图放大/缩小,线条非常像,不锋利 - 看起来很蹩脚

我的问题是,这个用例的整个方法是错误的吗?

1 个答案:

答案 0 :(得分:0)

我们基于地图的应用程序还具有非常慢的叠加渲染和(间歇性)边缘过度模糊。

好消息是我找到了一个解决方法,看起来像是一个bug,导致性能提高了300%。我注意到渲染器被反复要求在叠加边界之外绘制。所以我只是在我的MKPolygonRenderer子类的draw方法中添加了一个边界检查,如下所示:

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context
{
    if (!MKMapRectIntersectsRect([self.overlay boundingMapRect], mapRect)) {
        return;
    }
    [super drawMapRect:mapRect zoomScale:zoomScale inContext:context];
}

通过此更改,我们将每秒不到1次重绘改进为每秒2或3次重绘。