使用MKOverlayRenderer可调整大小的MKOverlay

时间:2013-12-25 05:40:59

标签: mkmapview

我希望有一个自定义的MKOverlay,它是一个固定在用户位置注释上的圆圈,用户可以通过捏合来调整大小。通过覆盖createPath方法并制作弧,我能够使用MKOverlayPathRenderer和自定义MKOverlay对象成功实现此目的。通过在我的叠加层的半径和坐标属性上使用KVO来处理叠加层的大小调整和移动。但是,调整大小非常不稳定,并且未正确计算boundingMapRect。

我也试过使用一个图像而不是继承MKOverlayPathRenderer MKOverlayRenderer,重写- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context但是当我调整CPU百分比时,跳转到160%的使用率(不是很好吗?)并且再次绘制boundingRect不正确。

我真的认为这样做的方法是使用MKOverlayPathRenderer,并且可能有某种原子计数器,这样只能重新调用重绘,例如每次触发捏合手势5到10次。

有没有人有任何建议?我也考虑过但是没有尝试制作UIView并将其作为子视图添加到地图视图中并将捏合手势放在其上但看起来很丑陋和肮脏。

1 个答案:

答案 0 :(得分:0)

在Overlay上计算新的boundingMapRect时,必须在Renderer上调用invalidatePath。之后,系统将在适当的时候为您调用createPath。