Базовое расположение - запасной вариант, кэширование местоположения и альтернативы - PullRequest
2 голосов
/ 02 апреля 2010

У меня есть несколько вопросов о Core Location.

1) Если пользователь откажет в разрешении моему приложению использовать местоположение ядра, или местоположение ядра по какой-то причине недоступно, есть ли запасной вариант? (Язык устройства, например?)

2) Можно ли кешировать местоположение устройства в следующий раз? Core Location делает это сам?

3) Мне действительно нужно время заката в зоне пользователя в середине весеннего сезона, и у меня есть функция для этого, когда у меня есть широта и долгота устройства. Возможно, я могу просто сделать предположение о времени, основанном на Locale? (Пример: в США предположим, около 7:00 вечера.)

EDIT:

Я действительно пытаюсь рассчитать закат в области пользователей для приложения. Ничего общего с картой. Я рассматриваю следующую последовательность событий:

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

Ответы [ 2 ]

1 голос
/ 08 апреля 2010

1) Строго говоря, если пользователь не разрешает использовать CoreLocation или, если разрешение было дано, но CoreLocation недоступен, то другого запасного варианта для получения местоположения пользователя в виде пары широта и долгота не существует. Использование локали может работать не во всех случаях. Во-первых, это просто даст вам приближение, которое может быть слишком далеко от реальности. Однако вам решать, подходит ли это приближение для вашего приложения. Более того, некоторые пользователи используют локали, отличные от локали, связанной с их страной. И у вас нет никаких гарантий, что люди, путешествующие за границей, будут корректировать дату / время каждый раз.

2) Базовое местоположение кэширует по умолчанию последнее местоположение, полученное с устройства GPS. Однако для людей, выезжающих за границу, это кэшированное местоположение будет, безусловно, неправильным (даже для людей, путешествующих всего в нескольких милях), и, как правило, вы должны отбрасывать кэшированное значение и снова локализовывать пользователя каждый раз. Я понимаю, что для людей, путешествующих по своей стране, это (обычно) не создаст огромных проблем. Но это зависит только от страны: путешествие по Италии не изменит время, но путешествие по США может изменить время до 3 часов.

3) Я бы предложил попробовать использовать Core Location и, в случае проблем, просто попросить пользователя ввести его / ее местное время или местоположение (города должно быть достаточно для вашей цели). Если вы решите запросить местоположение пользователя, вы можете получить соответствующую пару широта / долгота, но для этого потребуется работающее сетевое соединение.

0 голосов
/ 05 апреля 2010

2) Из онлайн-документов для CLLocationManager:

Служба определения местоположения возвращает начальное местоположение как можно быстрее, возвращая кэшированную информацию, когда она доступна.

Вы можете проверить метку времени CLLocation, чтобы увидеть, является ли она кэшированным значением или нет.

3) Если вы решили использовать локаль для начального приближения TZ, помните, что пользователи путешествуют, и могут не сбросить их локаль быстро Вы можете получить текущий объект TZ с помощью:

[NSTimeZone localTimeZone]
...