2015-11-26 1 views
1

Bonjour, je souhaite appeler le service Web chaque fois qu'il y a un changement d'emplacement de 50 mètres (pas moins). J'ai essayé d'utiliser des changements significatifs, mais cela fonctionne pour un minimum de 500 mètres et les startupdationnations appellent tout le temps. Alors, comment puis-je détecter si l'appareil s'est déplacé de 50 ou 100 mètres de l'emplacement.Notifier lorsque l'utilisateur bouge tous les 50/100 mètres iOS

J'ai utilisé le filtre de distance comme 50 mètres comme indiqué dans beaucoup de questions de stackoverflow. Mais cela ne fonctionne pas avant de passer à 50 mètres j'ai eu les mises à jour de localisation dans l'appareil.

Ici quelqu'un a expliqué à propos de filtre à distance - iphone core location: distance filter how does it work?

+0

Mais cela ne fonctionne pas. Si vous donnez distancefilter comme 50 encore je reçois la mise à jour dans l'emplacement avant 50 m changement d'emplacement – Cintu

Répondre

3

Il est très facile.

Première écriture dans votre ViewDidload Méthode Affecter CLLocationManager.

Ici, je définis 50M distance.

locationManager = [[CLLocationManager alloc] init]; 

    //there will be a warning from this line of code 
    [locationManager setDelegate:self]; 

    //and we want it to be as accurate as possible 
    //regardless of how much time/power it takes 
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 

    //set the amount of metres travelled before location update is made 
    [locationManager setDistanceFilter:50]; 
    [locationManager requestAlwaysAuthorization]; 
    [locationManager requestWhenInUseAuthorization]; 
    [locationManager startUpdatingLocation]; 

Ainsi, chaque 50 mètres changement appareil Cette méthode est appelée:

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 
    if (locations.count > 0) { 
     CLLocation *location = locations.lastObject; 
     User_latitude = [NSString stringWithFormat:@"%f",location.coordinate.latitude]; 
     User_longitude = [NSString stringWithFormat:@"%f",location.coordinate.longitude]; 
     NSLog(@"latitude = %f",location.coordinate.latitude); 
     NSLog(@"longitude = %f",location.coordinate.longitude); 
     [self webservice_UpdateLocation]; 
    } 
} 
+1

J'ai essayé cela mais dans l'appareil si vous bougez moins de 50m aussi, il donnera la mise à jour de l'emplacement. le filtre de distance n'est pas pour détecter le changement d'emplacement de 50 mètres – Cintu

+0

@ Anbu.Karthik - Est-ce que ce qui précède fonctionne? si je ne bouge pas aussi je vois des mises à jour! – Cintu