Iphone 的核心位置对我来说太神奇了。
我写了一些测试代码来调用 startlocationupdating 函数来获取位置:
(void)doContinuousPositioning:(UIButton*)发件人 { self.bPersistent = YES;
if (self.bPersistent) {
_tv_Info.hidden = YES;
_tableView.hidden = NO;
}
if (self.locationManager) {
[self.locationManager stopUpdatingLocation];
self.locationManager = nil;
}
self.locationManager = [[CLLocationManager alloc]init];
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
self.locationManager.delegate = self;
self.locationManager.distanceFilter = kCLDistanceFilterNone;
[self.locationManager requestAlwaysAuthorization];
[self.locationManager startUpdatingLocation];
_beginTime = [Global getTimeStamp];
[self.locationManager setAllowsBackgroundLocationUpdates:YES];
self.locationManager.pausesLocationUpdatesAutomatically = NO;
结果:
2017-08-29 17:13:13.081 |开始时间:2017-08-29 17:13:13.052
结束时间:2017-08-29 17:13:13.080
耗时:28毫秒
long:113.046818, alt:21.571278
海拔:38.528896
水平精度:65.000000
垂直精度:23.415365
类(class):-1.000000
速度:-1.000000
楼层:0
我发现无论你在哪里,位置返回的速度都非常快,函数运行时间在 60 毫秒或更短。
而且定位的精度也很高,一般在60米左右;
即使我从 A 地方移动到 B 地方,A 与 B 相差 10 公里
位置返回的速度也这么快,厉害了gggggggg!
我知道第一个位置是网络位置类型。
所以问题是:
iphone怎么回的这么快这么高的网络位置?
在我看来,网络位置来源来自cell或wifi ap;
获取cell id需要2ms,至少需要2s获取手机wifi ap。
第二个问题是:
iphone能否使用cell id计算高精度位置?
或
Iphone可以在20ms内获取wifi ap吗?
最佳答案
How can iphone return back so fast and high network position?
Core Location 是一个系统服务。它在后台运行并缓存结果。如果它有最近的位置,例如另一个应用程序(或您的应用程序)最近请求它,它几乎会立即提供。如果这些回调可用,则后续回调可能会提供更准确的结果,例如带 GPS 锁。
60 米的分辨率并不是真正的高精度,它可能来自 Wifi 和 Cell 信息的组合。
Can the iphone use the cell id to calculate a high accuracy position?
据我所知,手机信号塔信息用于最不准确的位置,其次是 Wifi 信息,最高精度来自 GPS/GLONASS。
这些信息源可以(并且很可能)由 Core Location 组合以提高准确性。
Iphone can get the wifi ap in 20ms?
前面说过,Core Location是一个系统服务,它可能会在20ms内响应你,但你无法知道位置数据是什么时候真正计算出来的,用了多少时间。
关于ios - 为什么iphone获取网络定位位置这么快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45951931/