1

在具有 CoreLocation 框架(用于 GPS 跟踪)的 iOS 中,我如何询问位置而不是获取持续更新。我不希望每秒钟左右调用一次 didUpdateToLocation ,我只想在需要时获取位置。

谢谢!

4

5 回答 5

2

我不相信有办法做到这一点。您可以只启动更新,然后在 didUpdateToLocation 中禁用它们,这样您就只能得到一个。

于 2012-06-09T00:07:18.920 回答
1

成功获取位置后停止定位服务

于 2012-06-09T00:07:05.380 回答
1

你不能。硬件(收音机等)不够快。相反,您必须在需要位置之前稍微调用 startUpdatingLocation 方法,并等待无线电获得您需要的准确修复(最初的几个位置回调可能不是非常准确或不如后来的回调准确) . 然后,如果您在很长一段时间内不需要位置更新,您可以停止它们,以帮助节省电池寿命。

于 2012-06-09T01:08:02.397 回答
1

正如我在评论中建议的那样,您可以随意使用-startUpdatingLocation和的组合-stopUpdatingLocation,如果您在收到位置更新后停止更新,除非您再次启动它,否则它将不会继续。下面的例子:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

    //Store your new location before stopping updates.

    [manager stopUpdatingLocation];
}

现在,当您想在应用程序中的某个其他时间检索新位置时。不用担心它的更新频率,因为它只会更新一次。

[locationManager startUpdatingLocation];

希望这是有道理的,并有所帮助!

于 2012-06-09T03:29:22.800 回答
1

当您调用startUpdatingLocation方法时,它将首先返回缓存点。因此,在委托方法didUpdateToLocation中,您应该检查该位置的准确性。如果它不在可接受的范围内,则应忽略该位置。您应该继续获取位置,直到该点落在可接受的范围内。一旦收到这样的点,你应该打电话stopUpdatingLocation

于 2012-06-09T04:15:53.487 回答