我在这里看到了许多 currentLocation 问题,但我尝试使用两个单独的 IBAction 设置两个点,因为据我了解,核心位置 updateLocation 方法无法测量用户选择的两个点之间的距离。例如,如果该人站在城镇的一侧,他们可以单击一个按钮,然后将其设置为 locA,然后他们前往城镇的另一侧,单击另一个按钮,它将设置为 locB,当他们单击第三个按钮,它将计算两者之间的距离。关于如何实现这一点的任何想法?
我试图这样做:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)setPointOne{
locA = [[CLLocation alloc] initWithLatitude:locationManager.location.coordinate.latitude longitude:locationManager.location.coordinate.longitude];
}
- (IBAction)setPointTwo{
locB = [[CLLocation alloc] initWithLatitude:locationManager.location.coordinate.latitude longitude:locationManager.location.coordinate.longitude];
}
- (IBAction)calculateDistance{
CLLocationDistance distance = [locA distanceFromLocation:locB];
totalDistance.text = [NSString stringWithFormat:@"Distance: %f Meters", distance];
[locA release];
[locB release];
}
当我这样做时,所有按钮都会导致崩溃
这是崩溃日志:
-[ViewController 位置]:无法识别的选择器发送到实例 0x1fd36b60 2012-11-10 16:38:38.567 MeasureIt[3043:907] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[ViewController 位置]:无法识别的选择器sent to instance 0x1fd36b60' * First throw call stack: (0x3a4f42a3 0x343e397f 0x3a4f7e07 0x3a4f6531 0x3a44df68 0x337110a5 0x33711057 0x33711035 0x337108eb 0x33710de1 0x336395f1 0x33626801 0x3362611b 0x388095a3 0x388091d3 0x3a4c9173 0x3a4c9117 0x3a4c7f99 0x3a43aebd 0x3a43ad49 0x388082eb 0x3367a2f9 0xd5a27 0x37ca6b20) libc++abi.dylib: terminate called throwing an exception ( lldb)