Я пытаюсь получить реальную позицию на симуляторе iPhone. Но я всегда получаю кешированный результат. Мой вопрос связан с этим и этим вопросом . Я использую код из примера LocateMe:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
if (locationAge > 5.0) return;
if (newLocation.horizontalAccuracy < 0) return;
if (bestEffortAtLocation == nil || bestEffortAtLocation.horizontalAccuracy > newLocation.horizontalAccuracy) {
self.bestEffortAtLocation = newLocation;
if (newLocation.horizontalAccuracy <= locationManager.desiredAccuracy) {
[locationManager stopUpdatingLocation];
locationManager.delegate = nil;
latitude = newLocation.coordinate.latitude;
longitude = newLocation.coordinate.longitude;
}
}
}
Но, похоже, это не работает правильно:
if (locationAge > 5.0) return;
Если координаты GPS старше 5 секунд, метод вернется. Но в моем случае (iPhone Simulator) метод вызывается только один раз. Поэтому выход из метода не очень хорошая идея. Если я извлекаю местоположение в начале метода, я получаю кэшированные результаты. В приведенном выше примере кода я никогда не получаю координату.
Чего мне не хватает?
Редактировать 1:
Все отлично работает на iPod touch.
Редактировать 2:
Как я могу заставить locationManager обновить свое местоположение? distanceFilter
установлен на kCLDistanceFilterNone
, но он не обнаруживает, что положение изменилось за несколько километров.
Как узнать, что данные о местоположении готовы? Например. обновления местоположения приходят каждые 10 секунд, нужно ли вводить паузу? Потому что мое приложение немедленно принимает существующее значение и не ждет, когда менеджер местоположения будет готов.
Редактировать 3:
Примерно через минуту я получаю
Ошибка: операция не может быть завершена. (ошибка 0 kCLErrorDomain.)
Я включил Wi-Fi, iPod touch и MacBook Pro с одинаковым SSID. Что я делаю не так?
Редактировать 4:
Кажется, проблема с Xcode 3.2.4 и iOS 4.1. Смотрите также здесь . Я не одинок: CLLocationManager на iPhone Simulator не работает с кодом kCLErrorDomain = 0 (много других результатов в Google)
Редактировать 5:
В iOS 4 Apple использует собственную базу данных для геолокации. Но я не понимаю, почему между iPod и MBP есть разница.
Редактировать 6:
Локализация также не работает на iPad. Кто-нибудь придумал решение?