如何检测用户是否在注释范围内
How To Detect A User Is Within Range Of An Annotation
所以我正在从事一个项目,其中包括在地图周围放置注释的许多用途。注释(这是一个具有更大圆形范围的自定义图像)出现在屏幕上,理想情况下,我希望用户是:
- 如果它们在注释范围内则通知
和
- 如果圆形图钉重叠超过 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)
现在您将在两端各有一个中心点(原始注释)
所以我正在从事一个项目,其中包括在地图周围放置注释的许多用途。注释(这是一个具有更大圆形范围的自定义图像)出现在屏幕上,理想情况下,我希望用户是:
- 如果它们在注释范围内则通知 和
- 如果圆形图钉重叠超过 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)
现在您将在两端各有一个中心点(原始注释)