一旦获得当前位置,如何停止更新位置?

时间:2015-08-10 09:53:09

标签: ios objective-c parse-platform cllocationmanager

我正在使用Parse和geoPointForCurrentLocationInBackground我可以在收到位置后停止更新,而不必手动停止。

如何在使用CLLocationManager收到位置后立即停止更新位置?

修改

我知道[self.locationManager stopUpdatingLocation];阻止它。 我真正要问的是,我怎么知道我第一次收到位置然后立即停止?

8 个答案:

答案 0 :(得分:10)

获取您的位置后,请使用以下方法:

[self.locationManager stopUpdatingLocation];
self.locationManager = nil;

答案 1 :(得分:2)

调用stopUpdatingLocation方法后立即致电didUpdateLocations

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    [manager stopUpdatingLocation];
    //store your location
    self.location = [locations lastObject];
}

答案 2 :(得分:2)

BOOL first_time = YES; // public

每次开始将位置设置first_time更新为YES:

first_time = YES; 
[self.locationManager startUpdatingLocation];
你的didUpdateUserLocation方法中的

if (userLocation == nil) {
    NSLog(@"User location is nil. maybe wating for permission");

} else if (!CLLocationCoordinate2DIsValid(userLocation.coordinate)) {
    NSLog(@"User location is not valid 2d coordinates. maybe called in background");
} else {
    NSLog(@"Did update user location: %f %f", userLocation.location.coordinate.latitude, userLocation.location.coordinate.longitude);

    // here is the first time you receive user location
    if (first_time)
    {
        first_time = NO;
        [self.locationManager stopUpdatingLocation];
    }
}

答案 3 :(得分:0)

stopMonitoringSignificantLocationChanges的反面不是{​​{1}},而是stopUpdatingLocation

查看CLLocation documentation了解更多详情。

答案 4 :(得分:0)

以下方法调用以保存和停止位置后

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {    
    self.location = [locations lastObject]
    self.locationManager.delegate = nil;
    [self.locationManager stopUpdatingLocation];
}

答案 5 :(得分:0)

最后在另一个问题中找到了答案......在这里重印它是因为我花了一段时间才绊倒它。

我不得不称之为:

  

[_ locationManager stopMonitoringSignificantLocationChanges];

即使我从来没有在第一时间调用startMonitoringSignificantLocationChanges,但似乎我必须“取消调用”它......奇怪的是它以这种方式工作,但是一旦我添加了该行,位置服务就会立即关闭。希望这有助于其他人。

答案 6 :(得分:0)

当前位置更新使用stopUpdatingLocation停止位置管理器。

region.center = self.mapView.userLocation.coordinate;
if (region.center.longitude != 0 && region.center.latitude != 0) {
    [self.locationManager stopUpdatingLocation];
}

答案 7 :(得分:0)

 self.yourLocationManager.stopUpdatingLocation()