5

シンプルな線を描くカスタム MKOverlayView があります。drawMapRect:設定中です完CGContextSetLineWidth(context, 30);​​全にズームインするときれいに見えますが、ズームアウトすると線がどんどん細くなっていきます。MKOverlayView のリファレンスには、マップのズーム レベルに合わせて自動的にスケーリングされることが記載されています。ズームレベルに関係なく、同じ幅を強制的に描画するにはどうすればよいですか? MKPolylineView(およびMKPolygonView)がこれを正しく行うことに気付きました...ズームして同じ幅を維持するように調整するたびに、線の幅がサイズ変更されるのがわかります。overlayView でこれを行うにはどうすればよいですか?

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 に答える