gpt4 book ai didi

ios - Swift:如何手动调用 CLLocation

转载 作者:行者123 更新时间:2023-11-29 00:47:43 25 4
gpt4 key购买 nike

因此通常当您尝试使用 CLLocation 获取用户的位置时,您将使用 didUpdateLocations 方法,该方法(如果一切顺利)将在使用 locationManager.startUpdatingLocations( )

但我需要能够手动调用获取位置的函数,这样我才能使用完成处理程序。在不使用 didUpdateLocations 方法的情况下开始更新位置后,我如何能够获取用户的位置?

最佳答案

你不能“手动调用 CLLocation”。开始更新位置后,系统开始调用您的 didUpdateLocations 方法。您获得的第一个位置的准确性可能很差。要获得一个好的位置,您确实需要检查准确性,并等到获得满足您要求的位置后再接受它。

我还没有使用新的 requestLocation 方法,所以我不知道它如何处理您第一次请求位置时得到的糟糕结果。文档说“位置修复是在 desiredAccuracy 属性指示的精度级别上获得的”,但据说 startUpdatingLocations 也符合所需的精度,如果当您调用 startUpdatingLocations 时,GPS 已关闭。

在任何情况下,这两种方法都使用结果调用 didUpdateLocations

如果您想在获得位置后调用闭包/完成处理程序,那么我建议您创建自己的位置管理器单例。我们称它为 MyLocationManager

你可以给它一个方法 getLocation(completion:) 并让它接受一个完成 block 。该实现将开始位置更新或调用 requestLocation(如果该方法返回的位置在第一次时可靠)。它还会在(可选的)实例变量中保存完成处理程序闭包。在 MyLocationManager 的 didUpdateLocations 实现中,它会检查完成处理程序并在找到时调用它,然后将完成处理程序清零。

关于ios - Swift:如何手动调用 CLLocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38447779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com