我正在使用Parse和geoPointForCurrentLocationInBackground我可以在收到位置后停止更新,而不必手动停止。
如何在使用CLLocationManager收到位置后立即停止更新位置?
修改
我知道[self.locationManager stopUpdatingLocation];阻止它。 我真正要问的是,我怎么知道我第一次收到位置然后立即停止?
答案 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()