1

MKOverlayPathView サブクラスのコア グラフィックスを使用して円を描画するために使用できる値に、MKCircle の半径 (メートル単位) を変換するにはどうすればよいですか?

次のコードでは、半径は 50 にハードコーディングされていますが、MKCircle の半径を反映する必要があります。

位置については、MKMapPointForCoordinate() を使用して MKCircle の座標を MKMapPoint に変換し、次に MKOverlayPathView の pointForMapPoint: を使用して MKMapPoint をポイントに変換します。しかし、MKCircle の半径を相対距離に変換するにはどうすればよいでしょうか?

MKCircle *circle = [self circleForLocation:location]; 
CGPoint relativePoint = [self pointForMapPoint:MKMapPointForCoordinate(circle.coordinate)];
float radius = 50;

//Fill
[self applyFillPropertiesToContext:context atZoomScale:zoomScale];
CGContextAddArc(context, relativePoint.x, relativePoint.y, radius, 0, 2*3.1415926535898, 1);
CGContextDrawPath(context, kCGPathFill);
4

1 に答える 1

2

MKCircleの高さと幅はboundingMapRect、円の直径と同じである必要があります。

CGRect boundingRect = [self rectForMapRect:circle.boundingMapRect];
CGFloat radius = boundingRect.size.width / 2;
于 2011-11-27T19:46:03.433 に答える