我正在使用 Core Location 进行转弯导航,并希望在隧道中显示“GPS 丢失”警报。
问题是以下两种情况对应用程序来说看起来是一样的:
- 用户开车进入隧道。 GPS 更新停止,因为无法知道用户的位置。
- 用户停在十字路口。 GPS 更新停止,因为用户不再移动。
我需要区分这两种情况。想法?
我尝试查看 horizontalAccuracy
属性,但有时更新会完全停止,因此没有新的 horizontalAccuracy
信息。
最佳答案
通常情况下,将 CLLocationManager 设置为最佳导航精度并且没有距离过滤器,即使您停在十字路口,您也应该每秒更新一次位置。
如果您在运动协处理器(使用 CMMotionActivityManager
)说您仍在开车时停止获取这些更新,那么您可以推断您在隧道(或地下 parking 场或 GPS 不佳的地方)信号)。
顺便说一句,如果您设置了 distanceFilter = 0
和 desiredAccuracy = kCLLocationAccuracyBestForNavigation
和 activityType = CLActivityTypeAutomotiveNavigation<,当您在十字路口停下时,GPS 更新不应停止
等
另一件需要注意的事情是,如果隧道有蜂窝网络覆盖,您仍然可以从蜂窝三角测量获得位置更新,但准确性较差。如果 CLLocation.horizontalAccuracy
从不到 50m 变为超过 300m,那么即使您仍在获取位置更新,您也已失去 GPS/GLONASS 覆盖范围。
关于ios - 使用 Core Location 检测隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750119/