2011-03-11 23 views
5

我有一個自定義MKOverlayView,它繪製一條簡單的線。在drawMapRect:我在設置CGContextSetLineWidth(context, 30);完全放大時看起來很好,但當縮小時,線條變得越來越細。 MKOverlayView引用說它會自動縮放到地圖的縮放級別。無論我的縮放級別如何,我都可以強制它繪製相同的寬度?我注意到MKPolylineView(和MKPolygonView)正確地做到了這一點......只要你縮放調整以保持相同的寬度,就可以看到線條的寬度調整大小。我怎麼能在我的overlayView中做到這一點?自定義MKOverlayView線寬

回答

14

目前還不清楚你想要哪個結果。您是否希望線寬保持不變,而不考慮縮放比例,還是希望線條的寬度與地圖視圖繪製的道路寬度相同?

爲了保持線寬一定程度的恆定不管是什麼,嘗試通過zoomScale劃分:

CGContextSetLineWidth(context, (30/zoomScale)); 

爲了保持線條的寬度相同的道路,用MKRoadWidthAtZoomScale:

CGContextSetLineWidth(context, MKRoadWidthAtZoomScale(zoomScale)); 

你可以如果你願意,還可以對路寬應用額外的縮放比例:

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

我想要line consista nt不管是什麼。我從來不會猜測,只有通過zoomScale進行分割才能做到這一點,它的確如此!我知道寬度和zoomScale需要成反比,這是分割的;但我不認爲這是線性的。 – GendoIkari 2011-03-11 18:42:06