正在尝试发送 POST 个带有纬度和经度的参数
Trying to send POST parameters with latitude and longitude
我正在尝试将一些参数发送到我的 phpMyAdmin 表,其中包含一个名为纬度和经度的文件。此后,我需要获取设备坐标并将其转换为字符串。
我已按照 Ray Wenderlich 教程进行操作,但我的参数中仍然出现 "nil"。看看下面的代码:
1 - 我已将框架添加到代码中并将 CoreLocation 文件导入到我的 "ResumeView.h",同时声明了纬度和经度字符串。
#import <CoreLocation/CoreLocation.h>
@interface ResumeView : GAITrackedViewController <UIAlertViewDelegate, CLLocationManagerDelegate>
{
NSString *latitude;
NSString *longitude;
2 - 现在,在我的 "ResumeView.m" 上,我添加了教程后面的其余代码...
@implementation ResumeView {
CLLocationManager *manager;
}
@synthesize latitude;
@synthesize longitude;
3 - 现在,在 viewDidLoad 上...
- (void)viewDidLoad
{
[super viewDidLoad];
manager = [[CLLocationManager alloc] init];
manager.delegate = self;
manager.desiredAccuracy = kCLLocationAccuracyBest;
[manager startUpdatingLocation];
4 - 然后,这些函数在我的代码中被引入,当然,在可以发送 POST 参数之前。
#pragma mark CLLocationManagerDellegate Methods
-(void) locationManager:(CLLocationManager *) manager didFailWithError: (NSError *)error {
NSLog(@"error: %@", error);
NSLog(@"Failed to get location! :(");
}
-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"Location: %@", newLocation);
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
latitude = [NSString stringWithFormat: @"%.8f", currentLocation.coordinate.latitude];
longitude = [NSString stringWithFormat: @"%.8f", currentLocation.coordinate.longitude];
}
}
5 - 这就是问题所在,两个坐标值都是 "nil" 并且无法发送到数据库。
@"latitude":latitude, // <---- error here! is nil when sending to database!
@"longitude":longitude, // <---- error here! is nil when sending to database!
您的值为零,因为位置管理器从不向您发送更新。您需要在 iOS 8 中调用新功能才能让位置管理器工作。将此 post 视为起点:
我正在尝试将一些参数发送到我的 phpMyAdmin 表,其中包含一个名为纬度和经度的文件。此后,我需要获取设备坐标并将其转换为字符串。
我已按照 Ray Wenderlich 教程进行操作,但我的参数中仍然出现 "nil"。看看下面的代码:
1 - 我已将框架添加到代码中并将 CoreLocation 文件导入到我的 "ResumeView.h",同时声明了纬度和经度字符串。
#import <CoreLocation/CoreLocation.h>
@interface ResumeView : GAITrackedViewController <UIAlertViewDelegate, CLLocationManagerDelegate>
{
NSString *latitude;
NSString *longitude;
2 - 现在,在我的 "ResumeView.m" 上,我添加了教程后面的其余代码...
@implementation ResumeView {
CLLocationManager *manager;
}
@synthesize latitude;
@synthesize longitude;
3 - 现在,在 viewDidLoad 上...
- (void)viewDidLoad
{
[super viewDidLoad];
manager = [[CLLocationManager alloc] init];
manager.delegate = self;
manager.desiredAccuracy = kCLLocationAccuracyBest;
[manager startUpdatingLocation];
4 - 然后,这些函数在我的代码中被引入,当然,在可以发送 POST 参数之前。
#pragma mark CLLocationManagerDellegate Methods
-(void) locationManager:(CLLocationManager *) manager didFailWithError: (NSError *)error {
NSLog(@"error: %@", error);
NSLog(@"Failed to get location! :(");
}
-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"Location: %@", newLocation);
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
latitude = [NSString stringWithFormat: @"%.8f", currentLocation.coordinate.latitude];
longitude = [NSString stringWithFormat: @"%.8f", currentLocation.coordinate.longitude];
}
}
5 - 这就是问题所在,两个坐标值都是 "nil" 并且无法发送到数据库。
@"latitude":latitude, // <---- error here! is nil when sending to database!
@"longitude":longitude, // <---- error here! is nil when sending to database!
您的值为零,因为位置管理器从不向您发送更新。您需要在 iOS 8 中调用新功能才能让位置管理器工作。将此 post 视为起点: