当准确性提高时,是不是有 CoreLocation 通知或委托方法?

Posted

技术标签:

【中文标题】当准确性提高时,是不是有 CoreLocation 通知或委托方法?【英文标题】:Is there a CoreLocation notification or delegate method when accuracy improves?当准确性提高时,是否有 CoreLocation 通知或委托方法? 【发布时间】:2015-01-14 16:09:23 【问题描述】:

如果您查看地图,精度半径开始变大,然后随着精度的提高而变小。但是 locationManager:didupdateLocations: 在更改时不会再次被调用。

该事件是否调用了某些东西?

【问题讨论】:

【参考方案1】:

我相信didUpdateLocations: 回调实际上会在精度更新时再次被调用。据此Apple docs on Core Location:

除了位置对象的时间戳,您还可以使用 该对象报告的准确性以确定您是否要 接受一个事件。随着它接收到更准确的数据,该位置 服务可能会返回带有准确度值的附加事件 相应地反映改进。扔掉不太准确 事件意味着您的应用在无法使用的事件上浪费的时间更少 无论如何都有效。

您尝试过哪些测试来提高准确性?你在 iPhone 上试过吗?您是否正确设置了委托和 desiredAccuracy 属性?

【讨论】:

【参考方案2】:

如果您提供以下代码,您将获得非常频繁的位置更新。

self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

但根据 Apple 的说法,建议在位置管理器处于活动状态时将充电器插入 ios 设备。这是因为在获取如此多的位置更新时,电池电量会很快耗尽。

CLLocationManager 还有其他精度级别(kCLLocationAccuracyBestForNavigation、kCLLocationAccuracyBest、kCLLocationAccuracyKilometer、kCLLocationAccuracyHundredMeters 等。)

【讨论】:

【参考方案3】:

该事件是否调用了某些东西?

没有。您继续获得相同的回调,但每个位置的准确性(可能)得到提高。 “精度提高”没有回调。

您在回调中收到的CLLocations 包含垂直和水平精度信息。

【讨论】:

以上是关于当准确性提高时,是不是有 CoreLocation 通知或委托方法?的主要内容,如果未能解决你的问题,请参考以下文章

比一直使用 CoreLocation 获得准确位置的更好方法?

CoreLocation:知道用户何时没有移动 n 分钟

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

CoreLocation 捕捉速度

CoreLocation 斯威夫特

使用交叉验证提高准确性,不使用交叉验证降低准确性