Преобразовать радиус MKCircle в радиус радиуса CoreGraphics - PullRequest
1 голос
/ 27 ноября 2011

Как я могу преобразовать радиус MKCircle (в метрах) в значение, которое я могу использовать, чтобы нарисовать круг, используя базовую графику в подклассе MKOverlayPathView?

В следующем коде радиус жестко закодирован в 50, но янужно, чтобы он отражал радиус MKCircle.

Для позиции я использую MKMapPointForCoordinate (), чтобы преобразовать координату MKCircle в MKMapPoint, а затем преобразовать MKMapPoint в точку, используя pointForMapPoint из MKOverlayPathView :.Но как я могу преобразовать радиус 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);

1 Ответ

2 голосов
/ 27 ноября 2011

Высота и ширина MKCircle's boundingMapRect должны быть равны диаметру круга:

CGRect boundingRect = [self rectForMapRect:circle.boundingMapRect];
CGFloat radius = boundingRect.size.width / 2;
...