wja*_*ans 5 cllocationmanager cllocation ios
我在iPhone应用程序中遇到以下问题:
我定期启用位置管理器,我等待多个位置更新.收到新位置后,我会检查新位置的时间戳属性,以确定它是否是旧位置:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
numberOfUpdatesInInterval++;
NSLog(@"%d;%f;%f;%.0f;%@;%@;%@",
numberOfUpdatesInInterval,
newLocation.coordinate.latitude,
newLocation.coordinate.longitude,
newLocation.horizontalAccuracy,
newLocation.timestamp,
[self getCurrentDateAsString],
newLocation);
}
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是我收到了新的位置,其中时间戳是新的,但坐标仍然是我之前收到的旧位置.当我以120km/h的速度驾驶我的汽车时,我测试了这个,多次接收相同的坐标但是时间戳不同.我在iOS 4和5中遇到了同样的问题.
这怎么可能?或者我该如何处理这个问题?
iPhone 获取位置的方式有多种。
最快的位置查找是小区信号定位。只要您最近有数据,大多数本地塔都会被缓存。蜂窝塔精度范围可以从 500m 到 1500m 甚至更高。
第二快的方法是 Wi-Fi 查找,前提是您有数据连接或最近去过该区域。这将提供非常准确的位置。需要注意的是,你必须有 wifi 并且有良好的数据信号。
最慢的是 GPS。iPhone 中的 GPS 是 aGPS。它使用来自手机信号塔位置的数据来更好地确定您的位置。如果手机没有数据连接并且不在 WiFi 附近,则可能需要 2 到 4 分钟才能修复。根据手机信号塔信息,可能需要 30 秒。
来自苹果文档:
当请求高精度位置数据时,定位服务提供的初始事件可能不具有您所请求的精度。定位服务会尽快传送初始事件。然后,它会继续按照您请求的精度确定位置,并在数据可用时根据需要提供其他事件。
在车内,您不太可能靠近 WiFi 位置,并且可能需要等待更长时间才能锁定 GPS。如果位置管理器认为您仍在先前位置的范围内,这可能会导致旧坐标具有不同的时间戳。
检查数据的 HorizontalAccuracy 以及时间戳,以确定位置是否如您所要求的那样准确。
| 归档时间: |
|
| 查看次数: |
1424 次 |
| 最近记录: |