首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地理栅栏iOS 6

地理栅栏iOS 6
EN

Stack Overflow用户
提问于 2012-10-04 13:16:03
回答 1查看 4.3K关注 0票数 5

我正在创建一个应用程序,告诉用户他们是否在目的地附近。我正在计算currentLocation和目的地之间的距离。我在didUpdateLocations中进行计算。它是有效的,但我已经看到有一些方法可以在不需要做任何数学计算的情况下处理它。

我在CLLocationManager中注册了该区域;但是,didExitRegiondidEnterRegion方法似乎没有被调用。

下面是我注册区域的代码部分:

代码语言:javascript
复制
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [self.locationManager startUpdatingLocation];
    [self.mySearchBar resignFirstResponder];
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

    self.distToRemind = 0;

    [worldMap removeAnnotations:[worldMap annotations]];
    NSLog(@"executou de primeira");

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
        [geocoder geocodeAddressString:[self.mySearchBar text] completionHandler:^(NSArray *placemarks, NSError *error)
         {
             CLPlacemark *placemark = [placemarks lastObject];

             //test
             //DefaultAnnotation *annot = [[DefaultAnnotation alloc] initWithCoordinate:placemark.location.coordinate andTitle:@""];
             CLRegion *newRegion = [[CLRegion alloc] initCircularRegionWithCenter:placemark.location.coordinate radius:10.0 identifier:@"RegionBoundary"];

             DefaultAnnotation *regionAnnotation = [[DefaultAnnotation alloc] initWithCoordinate:newRegion.center andTitle:@""];

             [self identifyPlacemark:placemark andSetAnnotation:regionAnnotation];

             MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(regionAnnotation.coordinate, 250, 250);


             [worldMap addAnnotation:regionAnnotation];
             [worldMap setRegion:region animated:YES];

             [self.locationManager startMonitoringForRegion:newRegion];

             if (self.boolPushButtonTapped) {
                  [self pushButtonTapped];
             }
         }
         ];
}

我是不是做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-05 05:25:26

好的,在使用iOS中的区域监控功能时,需要记住几件事。

无论将初始半径设置为什么值,

  • 面域都将默认为最小大小。一位苹果工程师告诉我,支持GPS的设备需要1亿欧元。450M仅适用于支持区域监控的Wifi设备(可监控的iPad 3和新的iPod Touches)
  • Regions是一种有限的商品。单个设备上可以监控的总数量是有限的。同样,一位苹果工程师告诉我,它大约在100个地区。使用委派方法确保添加的区域是好的还是坏的。
  • 区域非常有用,并且对电池寿命的影响最小。它们还会在状态栏中获得自己的位置图标。(中空的紫色位置箭头)
  • 它们的工作方式与其他位置

非常相似,您需要正确响应委托方法才能解释正在发生的操作。

您的代码看起来不错,但缺少围绕CLLocationManagerDelegate的逻辑。如果没有合适的委托来处理回调,您很可能会错过回调( -didExitRegion/-didEnterRegion)。

根据我的经验,我创建了一个单例类来处理我所有的位置管理器委托方法。一定要注册来倾听他们的声音。如果您在这些委托调用中包含更多代码,我将很乐意为您提供更多帮助。有大量的教程应该记录如何正确地设置它们。祝好运。

*注:今年我与WWDC的一位位置工程师谈到了许多关于最小区域大小和区域数量的未知因素。我可以确认最小区域大小为100,但不能确认最大区域数。到目前为止,我还没有这个需要。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12720658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档