2013-04-11 86 views
0

我有用户当前的位置和注释位置。 当用户点击一个按钮时,应用程序开始计算用户当前位置和引脚位置之间的距离。 这是我的代码:当前位置靠近销位置时显示警报视图

- (IBAction)done:(id)sender { 

[Locate startUpdatingLocation]; 
CLLocation *current; 
CLLocation *pin; 
do{ 
    current=[[CLLocation alloc]initWithLatitude:Locate.location.coordinate.latitude longitude:Locate.location.coordinate.longitude]; 
    pin=[[CLLocation alloc]initWithLatitude:arrived.latitude longitude:arrived.longitude]; 

}while([current distanceFromLocation:pin]>1000); 

} 

的问题是,当我点击这个按钮(完成),似乎进入一个无限循环和应用程序停止工作。

回答

0

您应该使用if语句,而不是for循环。该循环将被执行,直到用户在该引脚的1000米内。

- (IBAction)done:(id)sender { 

    [Locate startUpdatingLocation]; 
    CLLocation *current; 
    CLLocation *pin; 

    if ([current distanceFromLocation:pin] > 1000) { 
     current = [[CLLocation alloc]initWithLatitude:Locate.location.coordinate.latitude longitude:Locate.location.coordinate.longitude]; 
     pin = [[CLLocation alloc]initWithLatitude:arrived.latitude longitude:arrived.longitude]; 
    } 

} 

我想象一下,当用户的当前位置发生变化时,您想要重新调用此方法。