【发布时间】:2014-04-09 02:54:57
【问题描述】:
这是我创建地理围栏的代码:
Geofence *geofence = [[Geofence alloc] init];
[geofence setRadius:100.0];
[geofence setIdentifier: @"Fence1"];
[geofence setLocation:currentlocation];
CLRegion *region1 = [[CLCircularRegion alloc] initWithCenter:[geofence.location coordinate]
radius:geofence.radius
identifier:geofence.identifier];
region1.notifyOnEntry=YES;
region1.notifyOnExit=YES;
[self.locationManager startMonitoringForRegion:region1];
我可以说,上面的代码有效,这意味着地理围栏已经创建。但是我遇到了一个问题。
我有一个 .gpx 文件(我将在其中模拟我当前的位置),它们与区域/地理围栏中心的距离如下:55m、90m、150m、200m、300m、500m、 1Km、5Km和10Km。
我的问题是,我的地理围栏半径似乎不是真正的 100m,因为当我使用距地理围栏中心的距离为 55m、90m、150、200m、300m、500m、1km 的 gpx 文件进行模拟时。 LocationManager -didEnterRegion 和 -didExitRegion 的委托方法正在响应我在半径仅为“100m”的地理围栏内。
只有距我的地理围栏中心 5 公里和 10 公里的 gpx 文件才响应我在地理围栏外的上述委托方法。
你们能帮我解决这个问题吗?
【问题讨论】:
-
你有没有检查过创建区域的值和测试数据的位置?你试过 2KM 吗?
-
是的,测试数据都是正确的,我编辑了我的问题。我添加了应用程序的屏幕截图。我创建了一个半径为 100m 的叠加层,与 CLRegion Radius 的值相同。查看模拟的当前位置。这是距离我的地理围栏大约 1KM 的 gpx 文件。但是 CLLocationManeger 的 -didEnterRegion 和 -didExitRegion 告诉我我在我的地理围栏内(其半径仅为 100m)。有什么想法吗?
-
你的覆盖半径来自被监控的区域?我在模拟时没有看到这种问题,因此有健全性检查问题......
-
由于 iOS 中的地理围栏被定义为地图中的假想圆形区域,只是为了有一个视觉视图,我创建了一个与我的值(相同的中心坐标和相同的半径值)相同的叠加层CLRegion,即 100。
标签: ios7 cllocationmanager geofencing clregion