4

我已經開始區域監測。但我發現,didStartMonitoringForRegion獲取調用兩次也didEnterRegion獲取調用兩次。但我只打一次電話startMonitoringForRegion。我的代碼didStartMonitoringForRegion獲取調用兩次,一個startMonitoringForRegion

- (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{ 
    [email protected]"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]); 
} 

回答

2

嘗試調試。如果你沒有弄明白的時候,根本不理會第二didEnterRegion。即如果didEnterRegion連續兩次調用相同區域,則簡單地忽略第二個。

+0

這個答案並不完全知道爲什麼'didEnterRegion'被調用了兩次,因此它不是一個正確的答案? – 2014-03-23 09:26:48

0
[locMgr startMonitoringForRegion:myRegiondesiredAccuracy 
     :kCLLocationAccuracyBest]; 

這種方法你爲什麼不停止更新方法嘗試調用停止更新method.I後,認爲這會幫助你。

[locationManager stopUpdatingLocation]; 
+0

我試了一下。沒有工作。我也不認爲它與stopUpdatingLocation有關。我再次運行我的應用程序時需要位置數據。 – Harikrishnan 2013-03-07 09:06:24

相關問題