首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用岩心位置探测隧道

用岩心位置探测隧道
EN

Stack Overflow用户
提问于 2015-04-20 14:03:44
回答 2查看 741关注 0票数 4

我正在使用核心位置的转弯为基础的导航,并希望显示一个"GPS丢失“的隧道警报。

问题是,在应用程序中,以下两种场景看起来是相同的:

  • 用户开车进入隧道。全球定位系统更新停止,因为没有办法知道用户在哪里。
  • 用户在十字路口停下来。GPS更新停止,因为用户不再移动。

,我需要把这两种情况区分开来。想法?

我试过查看horizontalAccuracy属性,但有时更新完全停止,因此没有新的horizontalAccuracy信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-22 15:04:11

通常,在CLLocationManager设置为最佳导航精度和没有距离过滤器,您应该得到一个位置更新每秒一次,即使您是在一个交叉口。

如果当运动协处理器(使用CMMotionActivityManager)说你还在开车时,你停止了这些更新,那么你就可以推断出你在隧道(或者地下停车场,或者一个信号不好的地方)。

顺便说一句,如果您设置了distanceFilter = 0desiredAccuracy = kCLLocationAccuracyBestForNavigationactivityType = CLActivityTypeAutomotiveNavigation等,当您在交叉口被停止时,GPS更新不应该停止。

另一件需要注意的事情是,如果隧道有蜂窝覆盖,你仍然可以从蜂窝三角测量中得到位置更新,但精度更低。如果CLLocation.horizontalAccuracy从不到50米到300米以上,那么你已经失去了全球定位系统/全球导航卫星系统的覆盖范围,即使你仍然在获得位置更新。

票数 5
EN

Stack Overflow用户

发布于 2015-04-20 14:49:43

查看位置管理器:didFailWithError:方法:

如果location服务无法立即检索位置,它将报告一个kCLErrorLocationUnknown错误并继续尝试。

要确定第二种情况(用户停止),请使用locationManagerDidPauseLocationUpdates:方法:

当位置管理器检测到设备的位置没有变化时,它可以暂停更新的传递,以便关闭适当的硬件并节省电源。当它这样做的时候,它调用这个方法让你的应用程序知道这已经发生了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29750119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档