iphone中定位器的示例代码

时间:2011-04-28 13:22:05

标签: objective-c xcode ios-simulator

我正在尝试制作一个使用GPS和磁力计的应用程序来寻找麦加(清真寺)的方式和方向。它有一些特殊的功能,如即将到来的祈祷日期选择器,从当前位置时区计算的祷告时间和当前位置的天气等等。如果有人有关于此的示例代码,请回复。

提前致谢

1 个答案:

答案 0 :(得分:0)

可以告诉磁力计只是通过CLLocationManager返回当前设备的标题。它可以在未经过滤的3d中返回,但没有理由使用它 - 来自CLHeading只需使用trueHeading属性。这将为您提供指南针应用程序中显示的相同信息。

要从您所在的位置计算到麦加的标题,您可以使用给定here的公式。谷歌地图为我提供了一个大约21.436,39.832的地理定位为Masjid al-Haram(我不确定它是非常准确的,所以我不适当地低调),所以你可以从任何位置得到轴承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));

然后,您可以通过设备标题与刚刚计算的标题之间的差异在屏幕上旋转指针。可能最容易在UIView的transform属性上使用CGAffineTransform。

这就是我按顺便回答的所有类型,没有经过测试。在你依赖它之前,我会在一个可靠的来源上检查它。