0

所以我对编程非常非常非常非常陌生,但到目前为止我一直在摸索:我正在创建一个 Iphone 应用程序,我的目标是创建一个自动秒表;在预设位置开始并在预设位置停止的东西(两者都由用户设置)。如果预设 gps 位置和实际 gps 位置相等,则计时器将启动/停止。我通过按下按钮将位置设置为变量来完成此操作。

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

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

4

1 回答 1

3

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

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当前位置的属性而不是任意的 50m。但请注意,精度可能低至几公里。类似的东西MIN(horizontalAccuracy, 50)可能会很好用。

于 2012-05-02T13:51:33.653 回答