我正在使用CLLocationManger更新当前位置。虽然它给我的位置,但我得到的位置是更老的时间戳。我正面临的问题是,如何强制locationcontroller更新新的位置而不是缓存的位置。
目前我正在使用本教程......
http://www.mobileorchard.com/hello-there-a-corelocation-tutorial/
有人知道如何更新当前时间戳的位置而不是缓存的位置吗?
答案 0 :(得分:0)
您是在模拟器上还是在iPhone上运行项目?如果您在模拟器上运行项目,那么
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
只会被调用一次。
如果您在设备上进行测试,则应在每次更改位置时调用它。
确保您已设置位置管理器属性
locationManager.delegate=self;
[locationManager startUpdatingLocation];
希望有帮助...
答案 1 :(得分:0)
你可以使用这种方法
- (IBAction)update {
locmanager = [[CLLocationManager alloc] init];
[locmanager setDelegate:self];
[locmanager setDesiredAccuracy:kCLLocationAccuracyBest];
NSLog(@"*********this is location update method of login view controller");
[locmanager startUpdatingLocation];
}
-(void)awakeFromNib {
[self update];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
if (wasFound) return;
wasFound = YES;
CLLocationCoordinate2D loc = [newLocation coordinate];
lat2 = [[NSString stringWithFormat: @"%f", loc.latitude]retain];
logg2= [[NSString stringWithFormat: @"%f", loc.longitude]retain];
NSLog(@"latitude is %@",lat2);
NSLog(@"longitude is %@",logg2);
}
使用viewdidload方法中的perform选择器调用update方法。其中lat2和logg2是字符串值。 如果问题无法解决,那么输入如何在google中找到当前位置。你将获得许多带有解释的示例源代码
答案 2 :(得分:0)
您可以做的最好的事情就是根据您决定为应用设置的标准,扔掉太旧的位置。重新启动位置管理器应该告诉系统你想要一个新位置,但通常你得到的第一个位置可能是它最后的位置。检查时间戳可能就是您可以做的所有事情,但要为可能永远不会获得更新位置的可能性做好准备。根据我的经验,我已经看到,如果设备没有移动,如果它检测到当前位置足够好,那么用新位置更新系统绝对不会感到困扰。