2

我正在使用 CLLocationManager 获取当前位置,并且正在获取当前位置的纬度和经度值。我没有在我的应用程序中使用 Mapview。因此,每当更改当前位置时,我都想将当前位置更新到服务器。并且每 5 分钟我需要调用 Web 服务并在后台模式和前台模式下将当前位置更新到服务器。

-(void) getCurrentLocation
{
    // To get the current location of the place
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone; //whenever we move
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; //100 m
    //Start the location manager, then only updates the current location
    [locationManager startUpdatingLocation];
}

/In Location manager delegate method, if the location is updated it will call and get the values from the newLocation using CLLocation  
-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    CLLocation *location = [locationManager location];

    // Configure the new event with information from the location
    CLLocationCoordinate2D coordinate = [location coordinate];

    NSString *lat = [NSString stringWithFormat:@"%f", coordinate.latitude];
    NSString *lon = [NSString stringWithFormat:@"%f", coordinate.longitude];
    NSLog(@"dLatitude : %@", lat);
    NSLog(@"dLongitude : %@",lon);

    self.reverseGeocoder = [[[MKReverseGeocoder alloc] initWithCoordinate:newLocation.coordinate] autorelease];
    reverseGeocoder.delegate = self;
    [reverseGeocoder start];


    //Stop the location manager
    [locationManager stopUpdatingLocation];

}

每当位置改变时,那个时候我想获得特定位置的纬度和经度。

谢谢!

4

3 回答 3

0

将以下代码用于后台和前台任务。

    UIApplication *app = [UIApplication sharedApplication];

bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
}];

[NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(updateLocation) userInfo:nil repeats:YES];

-(void)updateLocation{

    // write the code to update location here. this will execute even if in background or foreground
}
于 2014-03-06T07:00:26.607 回答
0

如果您需要使用标准位置服务为用户提供持续的位置更新(即使在后台),您可以通过在您的应用程序的 Info.plist 文件。

于 2014-03-06T02:42:56.037 回答
-1

首先,如果您需要您的程序在前台和后台运行,请在项目的 info.plist 中添加所需的后台模式作为位置服务。获取位置作为 NSString 并尝试使用同步或异步类型将 URL 发布到服务器的 URL。

于 2012-05-15T14:22:47.837 回答