7

我听说过地理围栏,但我有一些疑问。希望你能回答其中的一些。

- 它是 iOS 5.1 的新功能,但地理围栏和使用区域有什么区别?从我读到的内容几乎相同,电池耗尽?

- 为什么我找不到关于地理围栏的苹果文档?

-您如何定义区域?我可以通过网络服务远程添加它们吗?

谢谢。

4

2 回答 2

11

地理围栏实际上自 iOS 4 以来就已存在。您可以在Apple Location Awareness Programming Guide中找到有关它的文档。它也被称为“区域监控”。

这些区域非常易于使用。CLRegion使用中心点(纬度、经度)、半径和唯一标识符创建一个。然后调用-startMonitoringForRegion. 当然,您需要注册 aCLLocationManagerDelegate来监听回调,-didEnterRegion并且-didExitRegion,但这也很容易做到。

您无法远程添加它们。仅来自设备。在过去的几年里,我了解了一些关于他们的事情。因此,希望这可以为您节省一些麻烦。

  • 并非所有设备都可以监控区域,因此请确保检查可用性
  • 有最小和最大区域大小。如果您在这些值之上或之下注册一个区域,它将默认为最小/最大值。最小值为 100M,最大值为地球大小的 1/3。相当大。
  • 1 台设备可以监控的最大区域数。这个区域“池”由所有应用程序共享,旧的栅栏将被清除,为新的栅栏腾出空间。所以要为此做好准备。最大数量接近 100。但在存折应用程序、提醒和其他应用程序之间共享......可能会很快被烧毁。
  • 确保您只有一个位置管理器代理实例,多个实例将为您提供多个代理调用,它们都在监听。

地理围栏是向位置添加功能的好方法,无需任何开销的主动 GPS 和位置跟踪。根据我的经验,地理围栏在一直打开时不会造成明显的电池消耗。苹果已经很好地解决了这些问题。它们的精度不如主动 GPS,但它们足够接近。祝你好运。

更新 这里的一些信息现在有点过时了。您可以监控的区域数量现在是 20 个,并且每个应用都有上限。此外,最小大小不是 100M,它可以更小,但在较小的数字下不能保证准确性。

于 2012-10-18T15:16:50.900 回答
3

自 iOS 4 以来,“地理围栏”一直以“区域监控”的形式出现。它使用距离检查来查看您是否进入了一个圆圈。这不是真正的地理围栏,因为真正的地理围栏是检查一个点是否落在多边形中(称为多边形中的点)。

从 iOS 6 开始,目前没有任何类似于使用多边形中的点的区域监控。要进行真正的地理围栏,您必须结合使用区域监控和 GPS。没有关于地理围栏的 Apple 文档,因为 CoreLocation 不支持它。

如果您打算采用多点方法,我建议您使用光线投射。有一个 Objective-C 类可以很好地实现它。它被称为objc-BorderPatrol

至于从 Web 服务发送栅栏,可能会做一些类似于 Twitter 的流 API 的事情,但这可能过于密集。最好使用重要位置来更新您的围栏。如果您要从 Web 服务发送栅栏,我建议使用MySQLPostGRE SQL,因为它们都具有非常好的地理空间扩展。

A few caveats: -> -[CLRegion containsCoordinate:] is never called by any CoreLocation object. All of the distance checking is internal. -> Significant Location updates every 500m or 5 minutes, whichever comes first. Significant location uses the IP address from a cell tower to determine location. -> Geofences and regions can overlap, keep track of this.

于 2013-07-22T19:16:49.533 回答