我这里的代码可以获得经度和纬度:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
Long.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
Lat.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
}
}
我的问题是,当我移动手机时,这些值会发生变化,我正在寻找将它们存储到变量中以便它们发生变化。这可能吗?
答案 0 :(得分:2)
Hrrrm ......
是的,这是可能的。琐事甚至。只需将currentLocation从函数中移出并进入类的@interface:
@interface MyClass
{
//other instance variables here
CLLocation *currentLocation;
}
//properties and function definitions go here
@end
然后改变你的功能:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *) newLocation
fromLocation:(CLLocation *)oldLocation
{
//Now saves to an instance variable instead of a local var.
if (currentLocation == nil)
currentLocation = newLocation;
if (currentLocation != nil) {
Long.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
Lat.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
}
}
然而,目前尚不清楚你在问什么。 didUpdateToLocation
方法是位置管理器的委托方法,用于报告用户位置中的更改。您想要存储哪些具体位置,以及在什么条件下?您想要保存位置管理员开始更新位置后获得的第一个位置更新吗?然后你想用它做什么?
请注意,当您首次向位置管理员询问位置更新时,您获得的第一个位置通常会非常糟糕。 (它离开一公里或更远的情况并不罕见。)您需要不断检查位置的水平精度,并等待GPS稳定并给出合理的读数。