所以我对编程非常非常非常新,但是我已经摸不着头脑了:我正在创建一个Iphone App, 我的目标是创造一个自动秒表;在预先设定的位置开始并停在预设位置的东西(两者都由用户设定)。如果预设gps位置和实际gps位置相等,则计时器将启动/停止。我已经通过按下按钮将位置设置为变量来完成此操作。
问题在于:这两个值永远不会相等。预设的开始和结束位置包含比“实际”位置更多的小数(值本身,而不仅仅是打印值),如果它们永远不相等,则计时器将不会启动。
任何帮助表示赞赏!!!!
答案 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)
这样的东西可能效果很好。