Ios 多区域的核心位置启动监控

Ios 多区域的核心位置启动监控,ios,xcode,location,core-location,locationmanager,Ios,Xcode,Location,Core Location,Locationmanager,如何使用locationManager startMonitoringForRegion方法开始对多个区域进行监视 例如,我想监控三个区域 CLLocationCoordinate2D centreLoc = {28.965243, 48.149724}; CLLocationDistance regionRadius = 200.00; CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:centreLoc r

如何使用locationManager startMonitoringForRegion方法开始对多个区域进行监视

例如,我想监控三个区域

CLLocationCoordinate2D centreLoc = {28.965243, 48.149724};
CLLocationDistance regionRadius = 200.00;
CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:centreLoc radius:regionRadius identifier:@"grRegion1"];


CLLocationCoordinate2D centreLoc2 = {28.765243, 48.149724};
CLLocationDistance regionRadius2 = 200.00;
CLRegion *grRegion2 = [[CLRegion alloc] initCircularRegionWithCenter:centreLoc2 radius:regionRadius2 identifier:@"grRegion2"];

CLLocationCoordinate2D centreLoc3 = {28.865243, 48.149724};
CLLocationDistance regionRadius3 = 200.00;
CLRegion *grRegion3 = [[CLRegion alloc] initCircularRegionWithCenter:centreLoc3 radius:regionRadius3 identifier:@"grRegion3"];

CLLocationAccuracy acc2=kCLLocationAccuracyBest;
[locationManager startMonitoringForRegion:grRegion2 desiredAccuracy:acc2];

如何启动这三个区域的监视器???

您的思路是正确的

首先,您的坐标应该是双精度值,您使用的是浮点值

其次,您需要为纬度和经度创建单独的数组,然后在索引i处获取这些值

这应该行得通

for (int i = 0; i < [AllRegionsArray count]; i++) {
    NSArray *longLati = [allRegionsArray objectAtIndex:i];
    NSMutableArray *latArray = longLati objectAtIndex:0];
    NSMutableArray *longArray = longLati objectAtIndex:1];
    lutiuid = [latArray objectAtIndex:i];
    longtuid = [longArray objectAtIndex:i];

    CLLocationCoordinate2D centreLoc = [CLLocation2DMake([[lutiuid] doubleValue], [[longtuid] doubleValue]);
//iOS 6
    CLRegion *grRegion = [[CLRegion alloc] initWithCenter:centreLoc radius:200 identifier://yourIdentifier, I used the string of the address];
//iOS 7
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:coordinate radius:radius identifier:identifier];
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startMonitoringForRegion:grRegion];
    NSLog(@"monotoring regions:%@", locationManager.monitoredRegions);
for(int i=0;i<[AllRegionArray count];i++){
NSArray*longLati=[AllRegionArray对象索引:i];
NSMutableArray*latArray=longLati objectAtIndex:0];
NSMutableArray*longArray=longLati对象索引:1];
lutiuid=[latArray objectAtIndex:i];
LongUid=[longArray对象索引:i];
CLLocationCoordinate2D centreLoc=[CLLocation2DMake([lutiuid]doubleValue],[LONGTID]doubleValue]);
//iOS 6
CLRegion*grRegion=[[CLRegion alloc]initWithCenter:中心半径:200 identifier://yourIdentifier,我使用了地址的字符串];
//iOS 7
CLCircularRegion*区域=[[CLCircularRegion alloc]initWithCenter:坐标半径:半径标识符:标识符];
locationManager.desiredAccuracy=KCallocationAccuracyBest;
[locationManager startMonitoringForRegion:grRegion];
NSLog(@“监控区域:%@”,locationManager.monitoredRegions);

只需为每个区域调用startMonitoringForRegion即可。如果我有多个区域,我该怎么做请给我举个例子你可以为每个区域调用startMonitoringForRegion。我尝试过这个方法,但不起作用。我的问题与提出问题的人类似,但这个解决方案仍然没有为我解决问题。locationManager.mo即使在调用StartMonitoringForRegion之后,nitoredRegion count仍返回0您的数组是否返回正确的纬度和经度值?当我使用CLCircularRegion而不是CLRegion时,我的问题得到了解决(已弃用)。我记不清是什么解决了问题,但我也做了一些其他的事情来解决问题。CLRegion现在也可以工作了。感谢您指出,当我最初回答我们仍然使用iOS 6时,我已经编辑了我的答案以反映这一点。