地理围栏iOS 6



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

我正在CLLocationManager中注册该区域;但是似乎没有调用方法CCD_ 4和CCD_。

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

- (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];
}
}
];
}

我是不是做错了什么?

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

  • 无论您将初始半径设置为什么,区域都将默认为最小大小。一位苹果工程师告诉我,启用GPS的设备的半径为100M。450M,适用于支持区域监控的仅Wifi设备(iPad3和新款iPod Touches)
  • 您可以监控的区域是有限的商品。在单个设备上可以监控的总数是有限的。苹果公司的一位工程师再次告诉我,大约有100个地区。使用委托方法来确保添加的区域是好的还是坏的
  • 区域非常有用,对电池寿命的影响最小。他们还在状态栏中获得自己的位置图标。(空心紫色位置箭头)
  • 它们的工作方式与其他所有位置API非常相似,您需要正确响应委托方法来解释正在发生的操作

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

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

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

相关内容

  • 没有找到相关文章

最新更新