0

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

4

2 回答 2

0

您似乎没有为您的位置管理器设置准确度级别 - 我会尝试这样做,看看情况是否有所改善。从您的代码看来,您可能正在为驱动程序编写应用程序,在这种情况下,您可能希望使用kCLLocationAccuracyBestForNavigation准确度级别(如果您,您应该使用另一个更合适的级别,因为BestForNavigation过滤器会消耗大量功率并且经过精心设计适用于手机位于车载底座并通电的情况)。

于 2012-08-12T12:41:50.033 回答
0

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

于 2012-08-12T12:42:43.673 回答