我正在使用核心位置的转弯为基础的导航,并希望显示一个"GPS丢失“的隧道警报。
问题是,在应用程序中,以下两种场景看起来是相同的:
,我需要把这两种情况区分开来。想法?
我试过查看horizontalAccuracy属性,但有时更新完全停止,因此没有新的horizontalAccuracy信息。
发布于 2015-04-22 15:04:11
通常,在CLLocationManager设置为最佳导航精度和没有距离过滤器,您应该得到一个位置更新每秒一次,即使您是在一个交叉口。
如果当运动协处理器(使用CMMotionActivityManager)说你还在开车时,你停止了这些更新,那么你就可以推断出你在隧道(或者地下停车场,或者一个信号不好的地方)。
顺便说一句,如果您设置了distanceFilter = 0、desiredAccuracy = kCLLocationAccuracyBestForNavigation和activityType = CLActivityTypeAutomotiveNavigation等,当您在交叉口被停止时,GPS更新不应该停止。
另一件需要注意的事情是,如果隧道有蜂窝覆盖,你仍然可以从蜂窝三角测量中得到位置更新,但精度更低。如果CLLocation.horizontalAccuracy从不到50米到300米以上,那么你已经失去了全球定位系统/全球导航卫星系统的覆盖范围,即使你仍然在获得位置更新。
发布于 2015-04-20 14:49:43
如果location服务无法立即检索位置,它将报告一个kCLErrorLocationUnknown错误并继续尝试。
要确定第二种情况(用户停止),请使用locationManagerDidPauseLocationUpdates:方法:
当位置管理器检测到设备的位置没有变化时,它可以暂停更新的传递,以便关闭适当的硬件并节省电源。当它这样做的时候,它调用这个方法让你的应用程序知道这已经发生了。
https://stackoverflow.com/questions/29750119
复制相似问题