2

我正在开发一个用户可以设置多个位置的应用程序。当用户进入或离开特定位置边界时,我成功显示通知。

现在,我需要为所有保存的位置提供监控,它可以是数百个甚至更多。我在 Apple 论坛和许多 iOS 设备只允许 20 个区域监控的地方读过。

在此处输入图像描述

我已经开发出我的代码来超越这种情况。我设置了 locationManager.distanceFilter = 200; 当我获得位置更新时。首先,我已经停止了所有区域监控和最近位置的条件,并再次为 20 个保存的位置启动区域监控。

我认为上述解决方案可能会导致在停止并重新启动区域监控时丢失任何已保存的位置。因此,请为我提供任何其他更好的解决方案来解决这 20 条区域监控问题的通知。

祝你今天过得愉快 。!!..

4

1 回答 1

5
  1. 拥有一个 NSMutableArray,其中包含您要监控的所有区域 +20。
  2. 收听重要的位置更新。
  3. 当您获得位置更新时,如果您的所有区域的 NSMutableArray 超过 20,则停止监控所有被监控的区域并使用 harvesine 公式计算最近的 20 个区域:

Harvesine - 目标 C

Harvensine - 斯威夫特

这将为您提供两个位置之间的距离。之后,您可以将该距离与区域半径进行比较,以了解是否在该区域内。

注意:如果您的半径是米,那么这个距离将以公里为单位,然后只需将 hasrsine 方法的结果乘以 1000,以便将其转换为米。

  1. 开始监测最近的 20 个区域的结果列表。

这将允许您始终根据您的位置监控 20 个最近的区域。能够监控超过 20 个,因为它将始终将监控区域更改为最近的 20 个区域。

于 2015-04-17T15:52:00.993 回答