Пример кода для поиска местоположения в iphone - PullRequest
0 голосов
/ 28 апреля 2011

Я пытаюсь создать приложение, которое использует как GPS, так и магнитометр, чтобы найти путь и направление для Мекки (мечети). Он имеет некоторые специальные функции, такие как выбор даты для предстоящих молитв, оставленные время молитвы рассчитывается из текущего часового пояса местоположения и погоды в текущем местоположении, а также некоторые другие. Если у кого-то есть пример кода по этому вопросу, пожалуйста, ответьте.

Заранее спасибо

1 Ответ

0 голосов
/ 28 апреля 2011

С помощью CLLocationManager магнитометр может быть задан только для возврата текущего курса устройства.Он может вернуться в нефильтрованном 3d, но нет никаких оснований его использовать - из CLHeading просто используйте свойство trueHeading.Это даст вам ту же информацию, что и в приложении «Компас».

Чтобы определить направление в Мекку, откуда вы находитесь, вы можете использовать формулы, приведенные здесь .Карты Google дают мне геолокацию около 21.436, 39.832 для Масджида аль-Харама (я не уверен, что это очень точно, поэтому я округлил до неуместно низкого значения), так что вы можете получить ориентир из любого места, CLLocationManager сообщит вамна что-то вроде:

#define toRadians(x) ((x)*M_PI / 180.0)
#define toDegrees(x) ((x)*180.0 / M_PI)

...

double y = sin(toRadians(39.832 - currentLocation.longitude)) * cos(toRadians(21.436));
double x = cos(toRadians(currentLocation.latitude)) * dsin(toRadians(21.436)) -
           sin(toRadians(currentLocation.latitude)) * dcos(toRadians(21.436)) * dcos(toRadians(39.832 - currentLocation.longitude));
double bearing = toDegrees(atan2(y, x));

Затем вы можете повернуть указатель на экране по разнице между курсом устройства и тем, который вы только что рассчитали.Вероятно, проще всего использовать CGAffineTransform в свойстве transform UIView.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...