iOS 6 CLLocationManager последнее местоположение

Итак, начиная с iOS 6, -locationManager:didUpdateToLocation:fromLocation: устарел.

Apple предлагает вместо этого использовать -locationManager:didUpdateLocations:, который предоставляет от одного до нескольких недавних изменений местоположения. Однако с невероятной вероятностью, что он предоставляет массив locations длины 1, похоже, нет способа получить доступ к параметру fromLocation:(CLLocation *)oldLocation старого.

Есть ли способ получить эту информацию без использования устаревших методов?


person Patrick Perini    schedule 15.11.2012    source источник


Ответы (2)


Вам просто нужно установить для свойства значение, которое возвращает locationManager: didUpdateLocations:, которое вы можете использовать как fromLocation, а затем снова вызвать метод и использовать то, что он возвращает, как toLocation.

person rdelmar    schedule 15.11.2012
comment
Я предполагаю, что когда вы говорите «вызвать метод снова», вы имеете в виду подождите, пока CLLocationManager не вызовет его от вашего имени. - person Rob; 15.11.2012
comment
Да, это то, что я имел в виду, хотя вы можете в некоторой степени контролировать, когда он вызывается, установив фильтр расстояния. - person rdelmar; 15.11.2012
comment
Очень хороший. Поэтому я прошу прощения за свой довольно дублирующий ответ и скорректировал, чтобы отдать вам должное! - person Rob; 15.11.2012

Как сказал rdelmar, если вам нужно предыдущее местоположение, я просто сохраню последнее местоположение, полученное от locationManager:didUpdateLocations:, в ivar или свойстве, и если locationManager:didUpdateLocations: вернет массив только с одним значением, возьмите значение, которое вы ранее сохранили в своем ivar / property, и используйте это для своего «старого» местоположения.

person Rob    schedule 15.11.2012