所以我对编程非常非常非常非常陌生,但到目前为止我一直在摸索:我正在创建一个 Iphone 应用程序,我的目标是创建一个自动秒表;在预设位置开始并在预设位置停止的东西(两者都由用户设置)。如果预设 gps 位置和实际 gps 位置相等,则计时器将启动/停止。我通过按下按钮将位置设置为变量来完成此操作。
这就是问题所在:这两个值永远不会相等。预设的开始和结束位置包含比“实际”位置更多的小数(值本身,而不仅仅是打印的值),如果它们永远不相等,则计时器将不会启动。
任何帮助表示赞赏!!!!
所以我对编程非常非常非常非常陌生,但到目前为止我一直在摸索:我正在创建一个 Iphone 应用程序,我的目标是创建一个自动秒表;在预设位置开始并在预设位置停止的东西(两者都由用户设置)。如果预设 gps 位置和实际 gps 位置相等,则计时器将启动/停止。我通过按下按钮将位置设置为变量来完成此操作。
这就是问题所在:这两个值永远不会相等。预设的开始和结束位置包含比“实际”位置更多的小数(值本身,而不仅仅是打印的值),如果它们永远不相等,则计时器将不会启动。
任何帮助表示赞赏!!!!
您可以简单地计算两个坐标之间的距离,并在距离开始或结束位置的距离低于某个阈值(例如 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)
可能会很好用。