以下のコードで無限ループが発生しました。ユーザーが「getDirections」メソッドボタンを押すと、アラートが正しく発生します。アラートボタンから「Drectionsを取得」を選択すると、Googleマップは完全に機能します。彼らはアプリケーションを再開すると、このビューに戻り、アプリケーションは直ちにGoogleマップに戻り、再度メソッドを再実行します。私がこれを止めることができるのは、「アプリケーションはバックグラウンドで実行されません」をYESにしたことです。これはやりたくありません。CLLocationManager実行ループ
誰かが私になぜこれが起こっているのかを伝えることができますか?
-(IBAction)getDirections
{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Directions" message:@"Do you want driving directions?" delegate:self cancelButtonTitle:@"No Thanks" otherButtonTitles:@"Get Directions", nil];
[alert show];
[alert release];
}
-(void)showDirections
{
locationManager = [[CLLocationManager alloc] init];
[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[locationManager setDelegate:self];
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
CLLocationCoordinate2D coord = [newLocation coordinate];
NSArray *array = [dataHold objectForKey:@"Subtree"];
NSString *latitude = [NSString stringWithFormat:@"%@",[array objectAtIndex:4]];
NSString *longitude = [NSString stringWithFormat:@"%@",[array objectAtIndex:5]];
double clubLatitude = [latitude doubleValue];
double clubLongitude = [longitude doubleValue];
urlString = [NSString stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f", coord.latitude, coord.longitude, clubLatitude, clubLongitude];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
buttonString = [alertView buttonTitleAtIndex:buttonIndex];
if([buttonString isEqualToString:@"Get Directions"])
{
[self showDirections];
buttonString = nil;
}
else if([buttonString isEqualToString:@"No Thanks"])
{
nil;
}
}
Shaharyar、私は一つだけdidUpdateToLocationを必要とするので、私はstopUpdatingLocationと呼ばれますdidUpdateToLocationメソッドの終わりに。素晴らしい仕事をした。本当にありがとう! – Eric