使用核心位置检测隧道

Mac*_*wic 4 objective-c core-location ios

我正在使用核心位置进行基于转弯的导航,并希望在隧道中显示"GPS丢失"警报.

问题是以下两个场景对应用程序看起来是一样的:

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

我需要将这两种情况区分开来.想法?

我曾尝试查看该horizontalAccuracy属性,但有时更新完全停止,因此没有新horizontalAccuracy信息.

pro*_*rmr 5

通常,CLLocationManager设置为导航的最佳精度而没有距离过滤器,即使您在交叉路口停车,也应该每秒更新一次位置.

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

顺便说一句,当你在一个路口停下,如果你已经设置GPS更新不应该停止distanceFilter = 0,并desiredAccuracy = kCLLocationAccuracyBestForNavigationactivityType = CLActivityTypeAutomotiveNavigation

另外需要注意的是,如果隧道具有蜂窝覆盖范围,您仍然可以从蜂窝三角测量获得位置更新,但准确性更差.如果CLLocation.horizontalAccuracy从不到50米到超过300米,那么即使您仍然获得位置更新,您仍然失去了GPS/GLONASS覆盖范围.