用户位置每10秒更新一次

时间:2012-08-12 12:33:02

标签: iphone gps cllocationmanager

我试图从我的代码每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方法将当前位置保存到服务器

2 个答案:

答案 0 :(得分:0)

您似乎没有为您的位置经理设置准确度 - 我会尝试这一点,看看情况是否有所改善。从您的代码中可以看出,您可能正在为驱动程序编写应用程序,在这种情况下,您可能希望使用kCLLocationAccuracyBestForNavigation准确性级别(如果您,您应该使用其他更合适的级别,因为BestForNavigation过滤器耗尽很多的功率,专为手机在车载底座和供电的情况而设计。

答案 1 :(得分:0)

我的理解。使用Wifi或3G是系统级设置。 CLLocationManager使用当前系统的网络来获取设备的位置,而程序员无法在3G / Wifi之间切换网络。