5

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

4

1 回答 1

14

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

无论如何,要使线宽保持恒定,请尝试除以 zoomScale:

CGContextSetLineWidth(context, (30/zoomScale));

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

CGContextSetLineWidth(context, MKRoadWidthAtZoomScale(zoomScale));

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

CGContextSetLineWidth(context, 1.5*MKRoadWidthAtZoomScale(zoomScale));
于 2011-03-11T15:46:16.880 回答