Уведомлять, когда пользователь перемещается каждые 50/100 метров iOS

Привет, я хочу вызывать веб-сервис всякий раз, когда происходит изменение местоположения на 50 метров (не меньше этого). Я пытался использовать значительные изменения, но они работают как минимум на 500 метров, а места запуска будут звонить все время. Итак, как я могу определить, переместилось ли устройство на 50 или 100 метров от местоположения.

Я использовал фильтр расстояния как 50 метров, как было сказано во многих вопросах stackoverflow. Но это не работает, прежде чем перейти на 50 метров, я получил обновления местоположения в устройстве.

Здесь кто-то объяснил о дистанционном фильтре - расположение ядра iphone: дистанционный фильтр как это работает?


person Cintu    schedule 26.11.2015    source источник
comment
Но это не работает. Если вы укажете Distancefilter как 50, я все равно получу обновление в местоположении до изменения местоположения на 50 м.   -  person Cintu    schedule 26.11.2015


Ответы (1)


Это очень легко.

Сначала напишите в своем методе ViewDidload, чтобы выделить CLLocationManager.

Здесь я установил расстояние 50 м.

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];

Таким образом, каждые 50 метров меняйте устройство. Этот метод называется:

-(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];
    }
}
person Maulik Patel    schedule 26.11.2015
comment
Я пробовал это, но в устройстве, если вы переместитесь менее чем на 50 м, оно также даст обновление местоположения. фильтр расстояния не для обнаружения изменения местоположения на 50 метров - person Cintu; 26.11.2015
comment
@ Anbu.Karthik - Работает ли вышеперечисленное? если я не двигаюсь, я также вижу некоторые обновления! - person Cintu; 26.11.2015