我正在调查我的应用程序使用区域监控。基本上,我想定义一个圆形区域,如果用户在这个圆圈之外,那么该应用程序将无法工作。
据我了解,区域监控仅检查用户是否越过边界。
如果是这种情况,有人可以指点我的教程/博客文章的方向,这可以帮助我实现我的目标吗?
答案 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
}