【问题标题】:How to properly set the Radius of CLRegion?如何正确设置 CLRegion 的半径?
【发布时间】: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


【解决方案1】:

我认为问题可能在于,就中心坐标而言,您使用与用于初始化地理围栏的变量相同的变量来初始化您的区域。因此,一个人总是认为自己在另一个人之中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多