区域监控仅在边界交叉上有效?

时间:2014-02-16 23:51:35

标签: ios objective-c gps cllocation region

我正在调查我的应用程序使用区域监控。基本上,我想定义一个圆形区域,如果用户在这个圆圈之外,那么该应用程序将无法工作。

据我了解,区域监控仅检查用户是否越过边界。

如果是这种情况,有人可以指点我的教程/博客文章的方向,这可以帮助我实现我的目标吗?

4 个答案:

答案 0 :(得分:1)

如果用户进入边界并从边界出去

,则区域监控将同时激活

以下方法可用于检查用户是否从特定的边界区域进入或离开:

  

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {

NSLog(@"User Enters in Region");
     

}

     

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {

NSLog(@"User Goes out from Region");
     

}

答案 1 :(得分:0)

计算从当前位置到圆心的距离 如果距离>半径然后在外面。

答案 2 :(得分:0)

您可以使用区域来监控用户的进/出活动,但通常您可以注册重要位置更改,然后检查用户的位置是否距离该点的距离有限。您可以通过调用这样的一个来轻松计算两个CLLocation点之间的距离:

[myLoc distanceFromLocation:locationOfCenterOfCircle] 

并将其与半径进行比较。以上方法以米为单位返回结果。在这种情况下,值得一读的是this,尤其是重要的位置变化。

答案 3 :(得分:0)

您可以在requestStateForRegion:(CLRegion *)上执行CLLocationManager

这样委托类的委托方法: -(void) locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region将被解雇。

在那里,您可以检查您是否在该地区内或外面。 所以基本上如果您request the state靠近应用程序开头的某个地方,您可以确定用户是在您的围栏内还是在围栏外。

这就像是:

-(void) locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region{
if (state == CLRegionStateInside){
    // Inside geofence
} else {
    // Keep state disabled
}