1

我正在尝试检测地图注释是否在 MKCircle 内。我不知疲倦地浏览了互联网,几乎没有找到关于 Swift 2.0 的可靠教程。所有教程或 Stack Overflow 问题都使用不推荐使用的代码或 Objective-C 来回答。不幸的是,我对 Swift 很陌生,所以翻译答案有点困难。

到目前为止我所拥有的:

到目前为止,我已经用 MKCircle 声明了一个圆圈,看起来像,

let location = CLLocationCoordinate2D(latitude: 36.9900,
        longitude: -122.0605)
let circle = MKCircle(centerCoordinate: location, radius: 100)

我最终想使用 CGPathContainsPoint 来检测注释是否在这个圆圈内。CGPathContainsPoint 的定义看起来像,

CGPathContainsPoint(_ path: CGPath?, _ m: UnsafePointer<CGAffineTransform>, _ point: CGPoint, _ eoFill: Bool) -> Bool

其中,
路径 - 对照
m 检查点的路径 - 仿射变换(不确定这样做的目的,但大多数问题已将此参数设置为 nil)
点 - 有问题的点
eoFill - 使用奇偶填充(真或假,再次不确定,但大多数问题已设置为假)

我的问题:如何转换或翻译我的 MKCircle,使其表现为 CGPath,以便将其传递到 CGPathContainsPoint 并将我的 CLLocationCoordinate2D 转换为 CGPoint?

4

1 回答 1

2

为什么要使用复杂的路径评估来确定一个点是否在圆内?您所描述的内容的一些变化对于针对任意复杂区域的测试点可能是有意义的,但您说的是一个圆圈。圆的定义是距选定点(中心)一定距离(半径)的一组点。所以:

  1. CLLocation为您的圆心和要测试的点创建对象。
  2. 使用distanceFromLocation:方法找出它们之间的距离。
  3. 如果距离小于 100 米(圆的半径),则目标点在圆内。否则就在外面。
于 2016-01-24T22:38:55.367 回答