如何检测用户是否在注释范围内

How To Detect A User Is Within Range Of An Annotation

所以我正在从事一个项目,其中包括在地图周围放置注释的许多用途。注释(这是一个具有更大圆形范围的自定义图像)出现在屏幕上,理想情况下,我希望用户是:

  1. 如果它们在注释范围内则通知 和
  2. 如果圆形图钉重叠超过 25%,则不允许将另一个注释放置在另一个注释的范围内

我认为这是一个非常独特的问题,有人帮忙应该会很有趣,所以玩得开心!谢谢大家!

您可以使用

检查每个注释的距离
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

This method measures the distance between the two locations by tracing a line between them that follows the curvature of the Earth. The resulting arc is a smooth curve and does not take into account specific altitude changes between the two locations.

有关详细信息,请参阅 Link

试试这个:

let location = CLLocation(latitude: 1, longitude: 1)//Or user's location
let distance = location.distance(from: anotherLocation)

编辑:

如评论中所述,您想创建一个等距点。我建议手动执行此操作:

从用户位置中减去注释位置。然后将您的距离加回到原来的距离。例如:

用户所在位置 = (1, 1)

注释的位置 = (3, 2)

垂直差为 2

水平差为 1

然后:

(3 + 2, 2 + 1)

你的结果:(5, 3)

现在您将在两端各有一个中心点(原始注释)