2009-10-30 3 views
0

J'utilise CLLocationManger pour mettre à jour l'emplacement actuel. Bien que cela me donne l'emplacement mais l'emplacement que je reçois est beaucoup plus ancien. Je suis confronté au problème, comment forcer le localisateur à mettre à jour l'emplacement frais et non l'emplacement mis en cache.CLLocationManger donne l'ancien emplacement. Comment obtenir le nouvel emplacement?

Actuellement, je suis en utilisant ce tutoriel ......

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

Tout le monde sait comment mettre à jour l'emplacement à l'horodatage actuel pas l'un cache?

Répondre

0

Courez-vous votre projet sur simulateur ou sur iPhone? Si vous exécutez un projet sur un simulateur, alors

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

sera appelée une seule fois.

Si vous testez sur l'appareil, il doit être appelé chaque fois que votre emplacement est modifié.

Assurez-vous que vous avez défini l'emplacement de la propriété du gestionnaire,

locationManager.delegate=self; 

[locationManager startUpdatingLocation]; 

espoir qui aide ...

0

vous pouvez utiliser ces méthodes

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

appel à la méthode de mise à jour à l'aide effectuer sélecteur dans viewdidload method.Here lat2 et logg2 sont des valeurs de chaîne. si le problème ne peut pas être résolu puis tapez comment trouver l'emplacement actuel dans google.you obtiendrez de nombreux exemples de code source avec explication

0

Le mieux que vous pouvez faire est de jeter des lieux qui sont trop vieux par la norme que vous décidez de définir pour votre application. Redémarrer le gestionnaire de localisation est censé indiquer au système que vous voulez un nouvel emplacement, mais généralement le premier emplacement que vous récupérez peut être celui qu'il avait en dernier. La vérification de l'horodatage est peut-être tout ce que vous pouvez faire, mais soyez prêt pour la possibilité que vous n'obtiendrez jamais un emplacement plus récent. J'ai vu dans mon expérience que si l'appareil n'a pas bougé, il ne dérange jamais de mettre à jour le système avec un nouvel emplacement s'il détecte que l'emplacement actuel est assez bon.

Questions connexes