自定义MKOverlayView线宽

时间:2011-03-11 14:31:11

标签: ios mapkit cgcontext mkoverlay

我有一个自定义的MKOverlayView,它绘制了一条简单的线条。在drawMapRect:我正在设置CGContextSetLineWidth(context, 30);这在完全放大时看起来很好,但是当你缩小时,线条变得越来越薄。 MKOverlayView参考说它会自动缩放到地图的缩放级别。无论我的缩放级别如何,我如何强制它绘制相同的宽度?我注意到MKPolylineView(和MKPolygonView)正确执行此操作...无论何时缩放以调整以保持相同的宽度,您都可以看到线条的宽度调整大小。我怎么能在我的overlayView中做到这一点?

1 个答案:

答案 0 :(得分:14)

目前尚不清楚您想要的结果。无论缩放如何,您是否希望线宽保持不变,或者您希望线条与地图视图绘制的道路宽度相同而不管缩放级别如何?

为了使线宽保持不变,请尝试用zoomScale除以:

CGContextSetLineWidth(context, (30/zoomScale));

要保持线条与道路的宽度相同,请使用MKRoadWidthAtZoomScale:

CGContextSetLineWidth(context, MKRoadWidthAtZoomScale(zoomScale));

如果您愿意,还可以对道路宽度应用额外的缩放:

CGContextSetLineWidth(context, 1.5*MKRoadWidthAtZoomScale(zoomScale));