首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时时获取位置坐标的问题

时时获取位置坐标的问题
EN

Stack Overflow用户
提问于 2011-06-28 22:53:29
回答 1查看 569关注 0票数 0

有时,在我的应用程序上获取位置坐标时会出现问题。

我已经在我家的模拟器和iphone上测试了我的应用程序的位置坐标(不仅仅是我家,我也在不同的位置(室外)测试了它,网络连接非常好),我看到了这种有线行为,我现在有了正确的坐标,然后我将应用程序发送到后台,然后带回来我得到了正确的位置坐标,如果我做了8-10次(即发送到后台并将其带到前台),有一次在应用程序来自后台后,我无法获得位置坐标,目前获得位置坐标的唯一方法是杀死应用程序,然后重新开始。所以我确定有什么地方出了问题,但我不确定是什么。

这就是我正在做的事情

代码语言:javascript
复制
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
   //if the time interval returned from core location is more than 30 seconds we ignore it because it might be from an old session
   if ( abs([newLocation.timestamp timeIntervalSinceDate: [NSDate date]]) < 30) {

        if(newLocation.coordinate.latitude != previousLocation.coordinate.latitude && newLocation.coordinate.longitude != previousLocation.coordinate.longitude){

        if(newLocation.horizontalAccuracy <= 100){
            [self.locationManager stopUpdatingLocation];
            [self.locationManager startMonitoringSignificantLocationChanges]; 
   }
   else{
        [self.locationManager startUpdatingLocation];
   }

所以基本上,我只在newLocation不超过30秒的情况下才使用它,它与我在本地存储的以前的位置不同,水平精度小于100米。当我在调试器中运行它时,我观察到的是我得到了第一个if条件3-4次,如果失败了,它就不会出现在那之后,这意味着didUpdateToLocation根本不会被调用。

一旦坐标满足我的所有标准,我就停止更新位置并执行startMonitoringSignificantLocationChanges。

我在else代码块中执行startUpdatingLocation的原因是。

例如,如果didUpdateToLocation由于startMonitoringSignificantLocationChanges而被调用,我想在那之后获得准确的位置,所以每次我没有得到我正在寻找的正确位置时,我都会执行startUpdatingLocation,因为我相信执行多个startUpdatingLocation不会有任何伤害。

如果我的思维过程或代码逻辑有问题,请让我知道。

EN

回答 1

Stack Overflow用户

发布于 2011-06-29 03:29:40

我首先要检查的是你的info.plist。您必须包括位置更新所需的关键后台模式->应用程序注册。如果没有这一点,你就不会在后台收到位置更新(除了重要的位置变化和区域监控)。

在大多数情况下,调用startUpdatingLocation。虽然我不认为这会有任何伤害,但除非你用stopUpdatingLocation来平衡它,否则我不相信它会有任何作用。文档中写道:

连续多次调用此方法不会自动生成新事件。但是,在两者之间调用stopUpdatingLocation确实会导致下次调用此met时发送一个新的初始事件

但是无论哪种方式,我不认为你需要再次告诉startUpdating,当超出distanceFilter属性或硬件收集到更准确的位置读数时,它会自动继续。

我没有看到你的第二个if的结束语。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6508442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档