cllocationmanager - временная метка объекта ответа cllocation всегда меньше одной секунды, почему? - PullRequest
1 голос
/ 15 сентября 2011

с использованием основного местоположения iphone api для получения некоторых местоположений.

Работает отлично, но меня озадачивает одна вещь.Те, которые я получаю, я вычисляю их «возраст», используя следующий код:

NSDate *eventDate = newLocation.timestamp;
NSTimeInterval locationAge = -[eventDate timeIntervalSinceNow];

, а затем печатаю возраст, используя:

NSLog(@"didupdateToLocation! lat: %f, lon: %f, accuracy: %f, age: %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude, newLocation.horizontalAccuracy, locationAge);

В моем выводе возраст ВСЕГДАменее чем за одну секундупримеры журналов:

2011-09-15 14:31:40.417 Nuba[1393:707] didupdateToLocation! lat: 59.340484, lon: 18.052089, accuracy: 816.373281, age: 0.055586
2011-09-15 14:31:40.495 Nuba[1393:707] didupdateToLocation! lat: 59.340484, lon: 18.052089, accuracy: 816.373281, age: 0.125578
2011-09-15 14:31:40.565 Nuba[1393:707] didupdateToLocation! lat: 59.340477, lon: 18.051996, accuracy: 999.848989, age: 0.019127

Почему это?Конечно, в первый раз телефон не «случайно» кэшировался менее чем в одну секунду, каждый раз?

Я делаю что-то не так, когда вычисляю возраст?

1 Ответ

1 голос
/ 15 сентября 2011

Похоже, вы правильно рассчитываете.Если службы определения местоположения уже используются фоновым приложением или если у вас есть услуга сотовой связи, вы можете легко определить местоположение уже при запуске приложения.

Вы не отображаете точность, поэтому возможно (вероятно), что ваше первое местоположение является местоположением с низкой точностью (то есть:> горизонтальная ошибка> 1000 м), рассчитанным по триангуляции вышки сотовой связи, которая всегда доступна, когда телефон находитсясотовая сеть.

...