自定义MKOverlayView线宽

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

目前还不清楚你想要哪个结果。 您是否希望线宽保持不变,而不考虑缩放比例,还是希望线条的宽度与地图视图中绘制的道路宽度相同?

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

 CGContextSetLineWidth(context, (30/zoomScale)); 

为了保持线宽与道路相同,使用MKRoadWidthAtZoomScale:

 CGContextSetLineWidth(context, MKRoadWidthAtZoomScale(zoomScale)); 

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

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