2017-03-03 174 views
0

你好,我目前正在开发一个使用Mapkit的IOS应用程序。我的应用程序正在使用locationmanager来获取用户位置和setregion。现在正在发生的奇怪事情是,当我处于不同的位置时,动画到setregion所需的时间是不同的。didUpdateLocations花费很长时间来加载

例如,当我在学校的细胞信号弱。当我在家中蜂窝信号强的地方时,mapkit设置区域所花费的时间大约延长了10倍。

我目前使用requestLocation()来调用didupdatelocation函数和web上的人们建议使用startUpdatingLocation。关于这一点的是,我只想在我的应用程序中设置一次setregion。而didupdatelocation正在不断的做。

我有点卡住,不知道从哪里开始解决这个问题。请帮忙!

+0

'requestLocation()'将等待长达10秒钟,试图找到一个与您在位置管理器上设置的'desiredAccuracy'一样精确的位置。调用'didUpdateLocation'花费的时间不过需要很长时间才能获得准确的位置。 – dan

回答

0

例如,当我在移动电话信号较弱的学校时。当我在家中蜂窝信号强的地方时,mapkit设置区域所花费的时间大约延长了10倍。

  • 这是一个预期的行为。检索位置是网络密集型任务,但要配置位置管理器的desiredAccuracydistanceFilter属性,然后调用requestLocationstartUpdatingLocation
  • 永远不要指定大于您所需的精度值。 Core Location使用您指定的准确度值更好地管理电源。
    更高的准确度要求更精确的硬件,如GPS,这会消耗更多的功率。

关于这一点的事情是,我只想在我的应用程序中设置一次setregion。

  • 传递一个nil消息给CLLocationManager实例将防止任何连续didUpdateLocation:调用。
+0

感谢您的回答。说得通!和对不起,我对Swift有点新,但是如何将一个零消息传递给CLLocationManager?谢谢 – JackieXY