为什么iphone如此快速地获得网络位置?

时间:2017-08-30 04:30:09

标签: ios core-location

Iphone的核心位置对我来说太棒了。

我写了一些测试代码来调用startlocationupdating函数来获取位置:

(无效)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 | starttime:2017-08-29 17:13:13.052

endtime:2017-08-29 17:13:13.080

timecost:28 ms

长:113.046818,alt:21.571278

海拔:38.528896

horizo​​ntalAccuracy:65.000000

verticalAccuracy:23.415365

当然:-1.000000

速度:-1.000000

楼层:0

我发现位置返回的速度非常快,无论你在哪里,功能运行时间都在60毫秒或更短。

并且位置的准确性也很高,大多数时间它给出了60米;

即使我从一个地方搬到B地方,A与B相差10公里

这个位置的回报也很快,令人惊讶!

我知道第一个位置是网络位置类型。

所以问题是:

iphone如何能够快速回归网络位置?

在我看来,网络位置来源来自cell或wifi ap;

它将花费2ms来获取手机信号,或花费2s来至少获得手机上的wifi ap。

第二个问题是:

iphone可以使用手机ID来计算高精度位置吗?

Iphone可以在20ms内获得wifi ap?

1 个答案:

答案 0 :(得分:2)

  

iphone如何能够快速回归网络位置?

核心位置是一项系统服务。它在后台运行并缓存结果。如果它有最近的位置,例如另一个应用程序(或您的应用程序)最近请求它,它几乎会立即给它。如果可用的话,后续回调可以提供更准确的结果,例如带GPS锁。

60米的分辨率并不是真正的高精度,它可能来自Wifi和Cell信息的组合。

  

iphone可以使用手机ID来计算高精度位置吗?

据我所知,蜂窝塔信息用于最不准确的位置,Wifi信息是下一个,最高精度来自GPS / GLONASS。

这些信息来源可以(并且可能)由核心位置组合以提高准确性。

  

Iphone可以在20ms内获得wifi ap?

如上所述,Core Location是一个系统服务,它可能会在20ms内响应你,但是不可能知道实际计算位置数据的时间和花费的时间。