В приложении, где местоположение было кэшировано, возникла временная проблема.Иногда службы определения местоположения возвращают местоположение дольше, чем ожидалось, и вместо этого оно возвращает последнее кэшированное местоположение.См. этот документация по iOS пример, в котором используется переменная howRecent
для фильтрации местоположений, которые, вероятно, кэшируются.
На всякий случай, если Apple изменит свой URL, соответствующий метод делегата будет указан здесь:
// Delegate method from the CLLocationManagerDelegate protocol.
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
// If it's a relatively recent event, turn off updates to save power
NSDate* eventDate = newLocation.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
if (abs(howRecent) < 15.0)
{
NSLog(@"latitude %+.6f, longitude %+.6f\n",
newLocation.coordinate.latitude,
newLocation.coordinate.longitude);
}
// else skip the event and process the next one.
}
Это эффективно игнорирует любые местоположения старше 15 секунд.В нашем приложении мы установили интервал 5.0
, но вам придется поэкспериментировать, чтобы увидеть, что вам подходит.