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

时间:2016-07-22 17:06:58

标签: ios swift mapkit mkpinannotationview

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

  1. 如果它们在注释范围内,则通知 和
  2. 如果圆形针脚重叠超过25%,则不允许在另一个注释范围内放置另一个注释
  3. 我认为这是一个非常独特的问题,对于有人提供帮助应该很有趣,所以玩得开心!谢谢大家!

2 个答案:

答案 0 :(得分:5)

您可以使用

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

此方法通过跟踪测量两个位置之间的距离   它们之间的一条线跟随地球的曲率。该   产生的弧线是一条平滑的曲线并没有考虑在内   两个地点之间的特定高度变化。

有关详细信息,请参阅Link

答案 1 :(得分:1)

试试这个:

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)

现在你将有两个点(你刚创建的那个点和用户的位置),每个点有一个中心点(原始注释)