Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
"的数目;地区“;由RegionMonitoring根据用户在iOS7中的当前位置进行监视_Ios_Mapkit_Core Location_Geofencing_Region Monitoring - Fatal编程技术网

"的数目;地区“;由RegionMonitoring根据用户在iOS7中的当前位置进行监视

"的数目;地区“;由RegionMonitoring根据用户在iOS7中的当前位置进行监视,ios,mapkit,core-location,geofencing,region-monitoring,Ios,Mapkit,Core Location,Geofencing,Region Monitoring,我正在从事这样一个项目,其中应用程序可以做以下事情: 用户选择半径(10米到1000米),然后按“go”按钮转到下一个viewController 在这里,应用程序抓取用户当前位置,并根据当前位置和选定半径启动“区域监控” 如果用户越过特定边界(10米到1000米),则会发出“ExitRegion”警报消息。并根据用户新的当前位置重新启动“区域监控”。应用程序一直都在这样做,前台和后台模式都是如此。我设法做到了&它工作得很好 现在,我在这里监视一个区域,然后是另一个区域。所以这个数字实际上是一。

我正在从事这样一个项目,其中应用程序可以做以下事情:

  • 用户选择半径(10米到1000米),然后按“go”按钮转到下一个
    viewController
  • 在这里,应用程序抓取用户当前位置,并根据当前位置和选定半径启动“区域监控”
  • 如果用户越过特定边界(10米到1000米),则会发出“ExitRegion”警报消息。并根据用户新的当前位置重新启动“区域监控”。应用程序一直都在这样做,前台和后台模式都是如此。我设法做到了&它工作得很好
  • 现在,我在这里监视一个区域,然后是另一个区域。所以这个数字实际上是一。但我知道一个应用程序最多可以监控15个区域。现在我的问题是,在这种情况下,我是否应该处理这个最大数量的地区问题?如果是的话,怎么办

    我还想补充一点,有一些解决方案,只适用于iOS 6和更早版本。因此,请让我知道是否有一些解决方案,可以根据用户在iOS7中的当前位置处理“RegionMonitoring”监视的“region”编号


    如果有人能给出答案或任何建议来完成我的应用程序所需的要求,我将非常高兴。

    如果您查看文档,最大限制为20。当您超过此数字时,
    iOS
    将释放对最旧区域的监控(就像FIFO队列一样)。确保半径小于
    最大区域监视距离
    。所以换句话说,您不需要担心最大限制,您可以通过实现
    didStartMonitoringForRegion:
    delegate来确保这一点

    但是,如果您想控制自己监视的区域数量,则始终可以使用
    stopMonitoringForRegion:
    停止监视区域。您可以使用属性
    monitoredRegions
    获取监视的区域列表。你可以随时清理你不再需要的区域。这是一个很好的做法,保持最低限度,因为它会影响电池和应用程序的性能

    我正在使用以下代码在需要时清除我的所有区域

    for (CLCircularRegion *region in self.locationManager.monitoredRegions) {
        [self.locationManager stopMonitoringForRegion:region];
    }
    
    但在您的情况下,我建议使用区域标识符常量(例如“MY-Region”),因为您无法监视具有相同标识符的两个区域,添加具有相同id的其他区域会自动删除以前监视的区域

    CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:coordinate radius:50.0f identifier:@"MY-REGION"];
    [self.locationManager startMonitoringForRegion:region];
    

    谢谢你的建议。我想在每个步骤中删除以前的监视区域。我的意思是,当用户退出一个区域时,它会删除前一个区域,并根据用户的当前位置启动另一个“区域监视”。我尝试这样做:
    [locationManager停止监视区域:[[locationManager监视区域]AllObject]objectAtIndex:0]
    并在开始监视区域的开始处调用它。但工作不正常。你知道吗-谢谢,我已经在iOS8 iphone 5s上做了一些测试。一旦你达到20个区域,你将不再设置更多。旧地区不会被驱逐。此外,如果有人对此感到好奇(因为文档中对此并不清楚),您可以设置20个BeaconRegions和20个CircularRegion。