两个不同的GPS位置由相同的代码给出

时间:2012-05-02 13:42:46

标签: iphone xcode gps cllocation

所以我对编程非常非常非常新,但是我已经摸不着头脑了:我正在创建一个Iphone App, 我的目标是创造一个自动秒表;在预先设定的位置开始并停在预设位置的东西(两者都由用户设定)。如果预设gps位置和实际gps位置相等,则计时器将启动/停止。我已经通过按下按钮将位置设置为变量来完成此操作。

问题在于:这两个值永远不会相等。预设的开始和结束位置包含比“实际”位置更多的小数(值本身,而不仅仅是打印值),如果它们永远不相等,则计时器将不会启动。

任何帮助表示赞赏!!!!

1 个答案:

答案 0 :(得分:3)

您可以简单地计算两个坐标之间的距离,并在距离低于特定阈值(例如50米)到开始或结束位置时启动/停止计时器。

CLLocation提供了一种方便的方法:

- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

例如:

 double lat = 51.7;
 double lng = 7.0;
 CLLocation *locationStart = [[CLLocation alloc] initWithLatitude:lat longitude:lng];
 CLLocation *currentLocation = ...; // received from location services

 if ([locationStart distanceFromLocation:currentLocation] < 50) {
     // start timer 
 } 

您也可以考虑使用当前位置的horizontalAccuracy属性而不是任意50米。但请注意,精确度可能会达到几公里。像MIN(horizontalAccuracy, 50)这样的东西可能效果很好。