#iphone #objective-c #cllocationmanager
#iPhone #objective-c #cllocationmanager
Вопрос:
В моем заголовке я поместил
CLLocationManager *locationManager;
@property (nonatomic, retain) CLLocationManager *locationManager;
в моем файле реализации:
- (void)viewDidLoad
{
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.distanceFilter = 50.0f;
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
self.locationManager.delegate = self;
[locationManager startUpdatingLocation];
[super viewDidLoad];
}
затем в методе делегирования
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSLog(@"Location: %g,%g", newLocation.coordinate.latitude, newLocation.coordinate.longitude );
}
теперь я продолжаю получать старое значение широты и долготы
поискал в Google решение, которое я не смог найти, я не понимаю, что я делаю не так,
Пожалуйста, любая помощь
Комментарии:
1. Это на устройстве или в симуляторе?
Ответ №1:
Вы можете использовать временную метку местоположения для фильтрации слишком старых обновлений местоположения:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if ([newLocation.timestamp timeIntervalSinceNow] < -60) return; // location is not fresh
...
}
Комментарии:
1. Я попытался прокомментировать distanceFilter, однако все равно получаю то же самое
2. Еще одна вещь, которую следует отметить, это то, что приложение maps на iphone показывает точное текущее местоположение
Ответ №2:
По моему опыту, диспетчер местоположений будет получать обновление местоположения только при перемещении телефона (предположительно, для экономии заряда батареи).
Другими словами, если телефон получил обновление местоположения 20 минут назад в определенном местоположении, и телефон не перемещался, при запуске служб определения местоположения он вернет это старое значение как «приемлемое» значение для объекта newLocation.
Вот почему обычно применяется предложение albertamg, хотя недостатком является то, что, отфильтровывая эти «старые» обновления, вы рискуете ничего не обнаружить с неподвижного телефона.
Надеюсь, это поможет =)