如何轮询CoreLocation而不是获取更新?

时间:2012-06-09 00:04:38

标签: iphone ios gps core-location

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

谢谢!

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

成功获得位置后停止位置服务

答案 2 :(得分:1)

你做不到。硬件(无线电等)不够快。相反,您需要在需要位置之前稍微调用startUpdatingLocation方法,并等待无线电获得所需的准确修复(前几个位置回调可能不是非常准确或与以后的回调一样准确) 。如果您长时间不需要它们以帮助节省电池寿命,则可以停止位置更新。

答案 3 :(得分:1)

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

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

    //Store your new location before stopping updates.

    [manager stopUpdatingLocation];
}

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

[locationManager startUpdatingLocation];

希望这有意义,并且有所帮助!

答案 4 :(得分:1)

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