将 MKCircle 半径转换为 ​​CoreGraphics 圆弧半径

Posted

技术标签:

【中文标题】将 MKCircle 半径转换为 ​​CoreGraphics 圆弧半径【英文标题】:Convert MKCircle Radius to CoreGraphics Arc Radius 【发布时间】:2011-11-27 18:50:14 【问题描述】:

如何将 MKCircle 的半径(以米为单位)转换为可用于使用 MKOverlayPathView 子类中的核心图形绘制圆的值?

在下面的代码中,半径被硬编码为 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);

【问题讨论】:

【参考方案1】:

MKCircle 的boundingMapRect 的高度和宽度应该等于圆的直径:

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

【讨论】:

以上是关于将 MKCircle 半径转换为 ​​CoreGraphics 圆弧半径的主要内容,如果未能解决你的问题,请参考以下文章

使用 UISlider 在 MKMapView 上将半径更改为 MKCircle

iOS - 添加和删除 MKCircle 覆盖到 MapView 导致故障

MK 圆 - 笔画宽度相当于米

将gps坐标转换为距离并将距离转换为十进制度数的半径

将伪代码步骤转换为 Python 算法

将距离转换为坐标[重复]