iphone - 对地理围栏的怀疑

时间:2012-03-31 11:24:49

标签: iphone geofencing

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

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

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

- 你如何定义区域?我可以通过webservice远程添加它们吗?

感谢。

2 个答案:

答案 0 :(得分:11)

Geofencing实际上已经出现在iOS 4之后。您可以在Apple Location Awareness Programming Guide中找到相关文档。它也被称为“区域监测”。

这些地区使用起来非常简单。使用中心点(纬度,长度),半径和唯一标识符创建CLRegion。然后拨打-startMonitoringForRegion。当然,您需要注册一个CLLocationManagerDelegate来收听回调,-didEnterRegion-didExitRegion,但这也很容易。

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

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

Geofences是一种向位置添加功能的好方法,无需任何开销有效GPS和位置跟踪。根据我的经验,地理位置在一直离开时不会造成明显的电池消耗。 Apple让他们发现相当不错。它们没有与有源GPS相同的精度,但它们足够接近。祝你好运。

更新 这里的一些信息现在有点过时了。您可以监控的区域数量现在为20,并且每个应用程序的上限。此外,最小尺寸不是100M,它可以更小,但不能保证较低数量的精度。

答案 1 :(得分:3)

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

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

如果您打算采用聚合点法,我会推荐光线投射。有一个Objective-C类可以很好地实现它。它被称为objc-BorderPatrol

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

一些警告: - >任何CoreLocation对象都不会调用-[CLRegion containsCoordinate:]。所有距离检查都是内部的。 - >重要位置每500米或5分钟更新一次,以先到者为准。重要位置使用来自蜂窝塔的IP地址来确定位置。 - >地理围栏和地区可以重叠,跟踪这一点。