gpt4 book ai didi

swift - 在 Swift 2.0 中使用 MKCircle 检测 CGPathContainsPoint 是否存在

转载 作者:搜寻专家 更新时间:2023-11-01 07:27:32 25 4
gpt4 key购买 nike

我正在尝试检测 map 注释是否在 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 来检测 Annotation 是否在这个圆圈内。 CGPathContainsPoint 的定义看起来像,

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

在哪里,
path - 检查点的路径
m - 仿射变换(不确定这样做的目的是什么,但大多数问题都将此参数设置为 nil)
point - 有问题的点
eoFill - 使用偶数-奇数填充(真或假,同样不确定,但大多数问题都设置为假)

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

最佳答案

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

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

关于swift - 在 Swift 2.0 中使用 MKCircle 检测 CGPathContainsPoint 是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34981875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com