我正在尝试使用Core Location框架在iOS应用程序中获取位置数据。我正在使用下面的代码段来启动位置管理器。
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = 5;
我知道我可以使用desiredAccuracy参数更改位置数据的准确性。但实际核心位置如何运作?它是使用GPS天线或WiFi还是手机信号塔获取的?我可以要求位置管理员仅使用GPS或仅使用WiFi或仅使用Cell塔进行提取吗?
答案 0 :(得分:3)
正如rmaddy所说,你无法控制如何确定位置。换句话说,您无法要求应用/设备使用GPS / CellTower / Wifi。
但是,您可以通过位置更新类型告诉应用程序是否“支持”GPS或Cell Tower。
如果你这样做:
[locationManager startUpdatingLocation];
然后该应用程序肯定会使用GPS +也许wifi和/或手机信号塔。
如果你这样做:
[locationManager startMonitoringSignificantLocationChanges];
然后,当您从一个手机信号塔移动到另一个手机信号塔时,应用程序肯定会使用手机信号塔并提供位置更新。这应该会降低您的GPS使用率和电池使用量。话虽如此,我不确定在这种情况下是否完全消除了GPS的使用。
希望这会有所启发。
<强>更新强>
请参阅Apple的链接: CLLocationManager Class Reference
但总的来说,您总是可以获得一次更新(将通过委托方法到达),然后使用:
[locationManager stopMonitoringSignificantLocationChanges];
您将需要做更多的工作并检查位置的时间戳,以确保更新不是旧缓存的更新。
答案 1 :(得分:1)
您无法强制CL使用GPS或Wifi或单元格,但您可以设置所需的准确度,以便它可能会执行您想要的操作。
如果您将desiredAccuracy设置为500或更高,它将使用Wifi或Cellular(如果可用),并关闭GPS。如果将desiredAccuracy设置为300或更低,则必须使用GPS。