Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Corelocation的ios应用程序流_Ios_Objective C_Core Location - Fatal编程技术网

使用Corelocation的ios应用程序流

使用Corelocation的ios应用程序流,ios,objective-c,core-location,Ios,Objective C,Core Location,我想知道是否有人可以解释使用核心位置的应用程序的流程。我正在构建一个GPS应用程序,它将暂停(在用户设置的给定延迟之后),然后运行迭代(也由用户设置)。但我发现它无限期地运行。如果我从代码中去掉for循环,那么在第一次搜索时,location manager会返回两个响应 实际上,这是:用户按下“获取位置”按钮。然后调用我们的getlocation函数,但它会循环两次,通过NSLog输出,我将始终看到2个响应,但仅在第一个循环上 获取位置更新是一个异步项目,您需要等待,然后过滤结果。流程是: 创

我想知道是否有人可以解释使用核心位置的应用程序的流程。我正在构建一个GPS应用程序,它将暂停(在用户设置的给定延迟之后),然后运行迭代(也由用户设置)。但我发现它无限期地运行。如果我从代码中去掉for循环,那么在第一次搜索时,location manager会返回两个响应


实际上,这是:用户按下“获取位置”按钮。然后调用我们的getlocation函数,但它会循环两次,通过NSLog输出,我将始终看到2个响应,但仅在第一个循环上

获取位置更新是一个异步项目,您需要等待,然后过滤结果。流程是:

创建位置管理器并将对象设置为其委托。 让它开始更新你的位置 返回

然后,您将开始接收位置更新。第一个可能是“过时”(上面的时间戳将是GPS上次激活时的时间戳)。请让您的代码拒绝任何时间戳比现在大1/2秒以上的位置更新,以解决此问题

接下来,您将收到一系列位置更新,水平精度读数非常差(不可接受地差)。检查准确度读数,并拒绝所有不够准确的读数。(精度读数实际上是一个半径值,定义了位置可能所在的圆,以米表示。越小越好。)

准确度是否足够取决于您的需要。如果您无法在合理的时间内(比如30秒)获得足够准确的读数,请确保您编写了一个超时代码,并向用户显示“无法获得准确读数”消息

一旦你获得足够准确的最新读数,或者超时,停止更新,直到下次需要位置修正(或者如果你的应用程序需要,继续更新)


您可能希望编写一个测试应用程序,在输入时显示时间戳、地图位置、精度读数等,然后在手机运行时带着手机四处走动。需要相当多的修修补补才能得到一个算法,该算法可以按您需要的方式过滤位置更新。

您能发布一些代码吗?我想我更想了解程序的流程以及我正在使用的各种函数来设置它。我知道viewDidLoad是第一位的。但是在objective-c中,程序的流程是自上而下的还是某些功能先于其他功能。例如,如果我调用CLLocation模块的分配和委托,那么我将立即转到locationManager功能,或者程序将首先遍历程序的其余部分。