开发者

CLLocationManger gives old location. How to get the new location?

I am using the CLLocationManger to update the current location. Though its giving me the location but the location I am getting is of much older timestamp. I am facing the problem in, how to force the locationcontroller to update the fresh location not the cached location.

Currently I am using this tutorial......

http://www.mobileorchard.com/hello-there-a-corelocation-tutorial/

Anybody know how to update l开发者_高级运维ocation at current timestamp not the cached one?


Are you running your project on simulator or on iPhone? If you are running project on simulator then

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 

will be called only once.

If you are testing on device then it should be called everytime your location is changed.

Make sure you have set the location manager property,

locationManager.delegate=self;

[locationManager startUpdatingLocation];

Hope that helps...


you can use this methods

- (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);
}

call the update method using perform selector in viewdidload method.Here lat2 and logg2 are string values. if problem can't be solved then type how to find current location in google.you will get many examples source code with explanation


The best you can do is throw out locations that are too old by whatever standard you decide to set for your app. Restarting the location manager is supposed to tell the system you want a new location, but usually the first location you get back may be whatever it had last. Checking the timestamp may be all you can do, but be prepared for the possibility that you may never get a newer location. I've seen in my experience that if the device hasn't moved, it never bothers to update the system with a new location if it detects that the current location is good enough.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜