【发布时间】:2015-11-02 10:37:16
【问题描述】:
我正在开发一个跟踪器应用程序。该应用程序需要以高精度知道设备位置,即它使用位置服务并忽略水平精度低于 20 米的位置。 CLLocation 没有明确声明是否通过 GPS 确定。但是,如果水平精度在 20 米或更高,则可以认为是 GPS 定位。
此外,我需要知道确定位置时的时间戳。我知道CLLocation 类中的属性timestamp。但是,我想从 GPS 获取时间戳,而不是系统时间。
是否可以获取 GPS 时间?我不关心 GPS 信号不可用的情况。我只需要获取我刚刚收到的 GPS 位置(高精度位置)的 GPS 时间。
关于stackoverflow的其他问题,建议使用以下代码sn-p:
CLLocation* location = [[CLLocation alloc] initWithLatitude:(CLLocationDegrees) 0.0 longitude:(CLLocationDegrees) 0.0];
NSDate* now = location.timestamp;
是否可以保证location.timestamp 比[NSDate date] 与 GPS 更相关?
如果关闭自动时间设置似乎不是真的。如果我转到设置 -> 常规 -> 日期和时间并关闭“自动设置”,则属性 timestamp 包含手动设置的系统时间。那么至少在自动时间设置开启时是否与 GPS 相关?
【问题讨论】:
-
“GPS 时间”我假设您是指从卫星发送单曲的时间?如果是这样,那将与每颗卫星不同。 GPS 通过查看系统时间与其接收到的信号的时间戳之间的时间差来工作。 CLLocation 上的时间很可能是您所追求的。 TBH,我不太确定您所说的“GPS 时间”是什么意思。
-
“GPS 时间”是指卫星发送的时间。但是,如果我在设备上手动设置系统时间,则
timestamp包含该手动设置的时间。所以我猜CLLocation上的timestamp只是设备的系统时间,与GPS卫星发送的时间无关。我只是想知道这是不是真的,即使系统时间设置为自动同步也是如此。
标签: ios gps core-location