iOS:是否可以要求核心定位框架仅使用蜂窝基站、WiFi或GPS天线获取位置?

iOS:是否可以要求核心定位框架仅使用蜂窝基站、WiFi或GPS天线获取位置?,ios,gps,wifi,core-location,cllocationmanager,Ios,Gps,Wifi,Core Location,Cllocationmanager,我正在尝试使用核心位置框架在iOS应用程序中获取位置数据。我使用下面的代码片段启动位置管理器 CLLocationManager *locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; locationManager.distanceFilter = 5; 我知道

我正在尝试使用核心位置框架在iOS应用程序中获取位置数据。我使用下面的代码片段启动位置管理器

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = 5;

我知道我可以使用desiredAccuracy参数更改位置数据的准确性。但核心位置究竟是如何运作的呢?它是否使用GPS天线、WiFi或手机发射塔获取数据?我是否可以要求位置经理仅使用GPS或WiFi或仅使用Cell tower进行提取

正如rmaddy提到的,您无法控制如何确定位置。换句话说,您不能要求应用程序/设备使用GPS/CellTower/Wifi之一

不过,通过位置更新类型,你可以告诉应用程序是“喜欢”GPS还是手机发射塔

如果您这样做:

[locationManager startUpdatingLocation];
然后应用程序肯定会使用GPS+可能是wifi和/或手机发射塔

如果您这样做:

[locationManager startMonitoringSignificantLocationChanges];
然后,当你从一个手机发射塔移动到下一个手机发射塔时,应用程序肯定会使用手机发射塔并提供位置更新。这将减少您的GPS使用和电池使用。话虽如此,我不确定在这种情况下,是否完全消除了GPS的使用

希望这能给我们一些启示

更新

请参阅苹果的链接:

但一般来说,您总是可以获得一次更新(将通过委托方法到达),然后使用:

[locationManager停止监视重要位置更改]


您需要做更多的工作,并检查位置的时间戳,以确保更新不是旧的缓存更新。

您不能强制CL使用GPS、Wifi或手机,但您可以设置所需的准确性,以便它可能会执行您想要的操作


如果您将desiredAccuracy设置为500或更高,它将使用Wifi或蜂窝网络(如果可用),并关闭GPS。如果您将desiredAccuracy设置为300或更低,则必须使用GPS

您无法控制位置的确定方式。如果我只想将其用于一次位置更新,而不需要时间更新,那么[locationManager startMonitoringSignificantLocationChanges]将如何工作?谢谢..:-)在[locationManager StopMonitoringSignificationLocationChanges]的情况下,是否也会调用相同的委托方法locationManager:didUpdateLocations:?我现在面临一个问题。您能告诉我应该在哪里调用[locationManager startUpdatingLocation]方法吗。我必须在viewDidLoad中执行此操作,还是只需单击按钮即可执行此操作?两者都可以。这真的取决于你的应用程序逻辑。让我们感谢。。但是你怎么能如此确定这些距离值呢?