4

を呼び出してリージョンの監視を開始しましたが、 が 2 回呼び出さstartMonitoringForRegionれていることもわかりました。しかし、私は一度だけ電話をかけています。私のコードdidStartMonitoringForRegiondidEnterRegionstartMonitoringForRegion

- (void) enableRegionMonitoring:(NSMutableDictionary *)locationInfoDic{

NSLog(@"started Loc Mon");
locMgr = [[CLLocationManager alloc] init];
[locMgr setDelegate:self];
NSString *locationId=[[NSString alloc]init];
double latitude=[[locationInfoDic objectForKey:@"lat"] doubleValue];
double longitude=[[locationInfoDic objectForKey:@"lon"] doubleValue];
if([locationInfoDic objectForKey:@"key"]){
    locationId=[locationInfoDic objectForKey:@"key"] ;
}else{
    locationId=@"NA";
}

CLLocationCoordinate2D myMonLocation = CLLocationCoordinate2DMake(latitude, longitude);
CLRegion *myRegion = [[CLRegion alloc]
                      initCircularRegionWithCenter:myMonLocation
                      radius:100
                      identifier:locationId];
[locMgr startMonitoringForRegion:myRegion
                          desiredAccuracy:kCLLocationAccuracyBest];

}





- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region{
NSLog(@"Region monitoring started\n%@",[region description]);
}
4

2 に答える 2

2

デバッグしてみてください。それを理解する時間がない場合は、単純に 2 番目を無視してdidEnterRegionください。つまりdidEnterRegion、同じリージョンに対して 2 回連続して呼び出された場合、2 回目は単純に無視します。

于 2013-03-08T07:50:17.770 に答える
0
[locMgr startMonitoringForRegion:myRegiondesiredAccuracy
        :kCLLocationAccuracyBest]; 

このメソッドの後で、更新メソッドを停止しない理由は、更新停止メソッドを呼び出してみてください。これは役立つと思います。

[locationManager stopUpdatingLocation];
于 2013-03-07T07:35:46.320 に答える