我试图从我的代码每10秒更新一次用户位置。但是,当我从wifi转向3G时,我面临一个问题。每个备用请求都来自我的wifi所在的位置。可以做些什么?
这是我的代码
NSNumber * n1; NSNumber * n2;
if([ud boolForKey:@"applicationActive"])
{
n1 = [NSNumber numberWithDouble:[map.userLocation coordinate].latitude];
n2 = [NSNumber numberWithDouble:[map.userLocation coordinate].longitude];
}
else
{
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startUpdatingLocation];
n1 = [NSNumber numberWithDouble:locationManager.location.coordinate.latitude];
n2 = [NSNumber numberWithDouble:locationManager.location.coordinate.longitude];
[locationManager stopUpdatingLocation];
}
[dict setObject:[ud objectForKey:@"CurrentDriverID"] forKey:@"DriverId"];
[dict setObject:[n1 stringValue] forKey:@"Latitude"];
[dict setObject:[n2 stringValue] forKey:@"Longitude"];
[requestG SaveDriverlocationWS:dict delegate:self];
注意:发生这种情况时,应用程序会保持在前台。 SaveDriverlocationWS方法将当前位置保存到服务器
答案 0 :(得分:0)
您似乎没有为您的位置经理设置准确度 - 我会尝试这一点,看看情况是否有所改善。从您的代码中可以看出,您可能正在为驱动程序编写应用程序,在这种情况下,您可能希望使用kCLLocationAccuracyBestForNavigation
准确性级别(如果您,您应该使用其他更合适的级别,因为BestForNavigation
过滤器耗尽很多的功率,专为手机在车载底座和供电的情况而设计。
答案 1 :(得分:0)
我的理解。使用Wifi或3G是系统级设置。 CLLocationManager使用当前系统的网络来获取设备的位置,而程序员无法在3G / Wifi之间切换网络。