我在绘制到MKMapRect派生类中传递给drawMapRect:mapRect:zoomScale:inContextMKOverlayView之外的区域时遇到问题。我试图为集合中的每个坐标绘制一个三角形,并且当坐标靠近MKMapRect的边缘时会出现问题。请参阅下图以获取问题示例。



在图像中,浅红色框表示每次调用MKMapRect时正在渲染的drawMapRect。如您所见,该问题用红色圆圈表示,其中仅渲染了三角形的一部分。我假设它被裁剪到MKMapRect,尽管MKOverlayView:drawMapRect的文档使我认为这不应该发生。

从文档中:


  您也不应假设视图的框架与叠加层的边界矩形匹配。视图的框架实际上比边界矩形要大,以便您可以为可能直接位于该矩形边界上的道路之类的物体绘制线。


我目前的解决方案是,如果对象在maprect中绘制的对象多于一次,该对象比给drawMapRect的maprect稍大,但这会导致我绘制一些超出需要的东西。

有谁知道在drawMapRect中增加剪切区域大小的方法,所以这不是问题吗?也欢迎任何其他建议。

最佳答案

我最终将缓冲区添加到传递给drawMapRect:mapRect:zoomScale:inContext的rect中,并使用该缓冲区来确定要绘制的对象。这导致绘制的对象比需要的更多,但数量不多。

10-08 01:02