Когда / где начать обновление местоположения? - PullRequest
2 голосов
/ 11 октября 2010

Определение позиции занимает некоторое время. Когда и где должен быть запущен менеджер местоположений?

Теперь я запускаю обновление местоположения за один просмотр до того, как загрузится представление результатов (для которого требуется местоположение) Если пользователь быстро нажимает, я получаю 0,0 координат.

Чтобы получить правильное время, startUpdatingLocation следует вызывать за три вида до представления результатов. Проблема здесь в том, что мне придется передать значение через эти три контроллера вида.

Следующее, что мне нужно, это местоположение также в другом виде (а не в вышеупомянутых). Я думал, что создам собственный класс слушателя местоположения. Но когда будет создан этот класс и пройдены координаты (долгота, широта)? Протокол не помогает мне, потому что только класс, который создал мой слушатель местоположения, вернет результаты.

Я немного читаю и придумываю следующие возможные решения:

1) Использование Центра уведомлений (см. это решение )

2) Создайте свойство моего менеджера местоположения в AppDelegate

На 1) у меня была бы проблема, что представление, которому нужны результаты, не было бы создано прежде.

Как бы выглядела реализация 2)? Я создаю экземпляр диспетчера местоположения в делегате приложения и затем получаю доступ к некоторым иварам, таким как широта / долгота AppDelegate? Если бы я использовал решение, описанное здесь , мне бы пришлось каждый раз применять CLLocationManagerDelegate. Не лучше ли иметь один класс для этого?

Возможно, у вас есть третье решение?

1 Ответ

1 голос
/ 11 октября 2010

Третьим решением может быть использование одноэлементного класса, в котором вы храните широту и долготу местоположения в CLLocationCoordinate2D. Затем вы можете использовать следующий код для доступа к сохраненной координате из любого представления в вашем проекте

DataController* dataController = [DataController sharedDataController];
CLLocationCoordinate2D currentLocationCoordinate = dataController.coordinate;
...