iPhone でリージョン モニタリングを実行しようとすると、問題が発生するだけです。まず第一に、私は iPhone 4 デバイスでどちらかを使用したり、発砲しdidEnterRegion
たりしたことがありません (一度もありません)。didExitRegion
ダウンタウンを歩き回って労働時間を無駄にする代わりに、シミュレーターでテストすることにしました (ただし、実際のシナリオでこの動作を確認したいと思います)。まず第一に、シミュレーターは精度の点でかなり外れています。かなり正確だと思います (または、私がそう仮定したのは間違っていますか?)。
以下は、[デバッグ] メニューの下の場所を変更することにより、シミュレーターで行われました。
didEnterRegion
問題のサークルから約8ブロック離れていましたが、ようやく発砲しました。私が地域を出たとき、didExitRegion
約200回連続で発砲しました。これはシミュレータのバグですか?ばかげているので、私はこれをあきらめて、自分でこのことを計算し始める準備がほとんどできています。
なぜ精度が非常に悪いのか、なぜ私のメソッドが何度も起動されるのかについてのアイデアはありますか?
関連するコードは次のとおりです。
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions
{
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
CLLocationDegrees latitude = 45.50568;
CLLocationDegrees longitude = -73.57033;
CLLocationCoordinates2D centerCoordinate = CLLocationCoordinate2DMake(latitude, longitude);
CLLocationDistance regionRadius = 200.0;
CLRegion *myRegion = [[CLRegion alloc] initCircularRegionWithCenter:centerCoordinate radius:regionRadius identifier:@"aroundWork"];
[locationManager startMonitoringForRegion:myRegion];
return YES:
}
-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
NSLog(@"Entered region: %@", region.identifier);
}
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
NSLog(@"Exited region: %@", region.identifier);
}