ios - 使用 Core Location 检测隧道

标签 ios objective-c core-location

我正在使用 Core Location 进行转弯导航,并希望在隧道中显示“GPS 丢失”警报。

问题是以下两种情况对应用程序来说看起来是一样的:

  • 用户开车进入隧道。 GPS 更新停止,因为无法知道用户的位置。
  • 用户停在十字路口。 GPS 更新停止,因为用户不再移动。

我需要区分这两种情况。想法?

我尝试查看 horizo​​ntalAccuracy 属性,但有时更新会完全停止,因此没有新的 horizo​​ntalAccuracy 信息。

最佳答案

通常情况下,将 CLLocationManager 设置为最佳导航精度并且没有距离过滤器,即使您停在十字路口,您也应该每秒更新一次位置。

如果您在运动协处理器(使用 CMMotionActivityManager)说您仍在开车时停止获取这些更新,那么您可以推断您在隧道(或地下 parking 场或 GPS 不佳的地方)信号)。

顺便说一句,如果您设置了 distanceFilter = 0desiredAccuracy = kCLLocationAccuracyBestForNavigationactivityType = CLActivityTypeAutomotiveNavigation<,当您在十字路口停下时,GPS 更新不应停止

另一件需要注意的事情是,如果隧道有蜂窝网络覆盖,您仍然可以从蜂窝三角测量获得位置更新,但准确性较差。如果 CLLocation.horizo​​ntalAccuracy 从不到 50m 变为超过 300m,那么即使您仍在获取位置更新,您也已失去 GPS/GLONASS 覆盖范围。

关于ios - 使用 Core Location 检测隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750119/

相关文章:

android - 当 WIFI 网络没有互联网连接时,.net 或 Xamarin 互联网可用性检查

ios - Swift-将数组分配给collectionviewcell中的tableview

ios-simulator - 重新启用 iPhone 模拟器定位服务

ios - Concat 运算符 RxSwift

ios - 将两个具有相同 UUID 的 BLE 设备配对(使用 CoreBluetooth)

objective-c - iOS:为什么定时器(和performSelector)会立即触发选择的方法?

ios - 谷歌地图 animateToCameraPosition iOS7 问题

ios - 是否可以向 iOS 应用程序用户发送更新通知

iphone - 将 GPS 集成到我的应用程序中

ios - 如何在 ibeacon 中使用唯一标识符?