2014-03-06 91 views
1

这是我创建地理围栏代码:如何正确设置CLRegion的半径?

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文件(我将用它来模拟我的当前位置),它们距离区域中心/地理围栏的距离如下:55米,90米,150米,200米,300米,500米,1公里,5公里和10公里。

我的问题是,它似乎是我的地理围栏半径不是真的100米,因为当我模拟使用gpx文件,距地理围栏中心的距离是55米,90米,150米,200米,300米,500米,1公里。代表方法LocationManager -didEnterRegion-didExitRegion正在做出回应,我在我的地理围栏内,其半径仅为“100米”。

只有离地理围栏中心5Km和10km距离的gpx文件才会响应我在地理围栏之外的所述委托方法。

你能帮我解决这个情景吗?

enter image description here

+0

你有没有理智检查该地区的创建值和测试数据的位置?你尝试过2KM吗? – Wain

+0

是的,测试数据都是正确的,我编辑了我的问题。我添加了应用程序的屏幕截图。我创建了一个半径为100米的覆盖层,CLRegion Radius的值相同。看看模拟的当前位置。这是距离我的地理围栏1KM左右的gpx文件。但CLLocationManeger的-didEnterRegion和-didExitRegion告诉我,我在我的地理围栏内(其半径仅为100米)。有什么想法吗? –

+0

覆盖半径来自被监测区域?我在模拟时没有看到这种问题,因此理智检查问题... – Wain

回答

0

我认为这个问题可能是你使用的是相同的变量与为那些你正在使用尽可能的中心坐标关切地初始化地理围栏来初始化你的区域。因此,人们总是认为它在另一个范围内。