我的应用程序在模拟器上运行完美,一切正常。但现在我想在我的iPhone上找到它,我发现GPS功能不起作用。
这是我的代码。
[super viewDidLoad];
//eigener Standort
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
eigLat = newLocation.coordinate.latitude;
eigLon = newLocation.coordinate.longitude;
eigLatString = [NSString stringWithFormat:@"%f", eigLat];
eigLonString = [NSString stringWithFormat:@"%f", eigLon];
}
直到现在一切都很好。如果我使用NSLog,我会得到正确的坐标。
但是我想在这里使用我的坐标:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
news = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:NULL];
for (x=0; x<[news count]; x++)
{
//Berechnung der Entfernung
erdradius = 6371.1;
//Koordinaten von Datenbank in String schreiben
NSString *latitude = [[news objectAtIndex:x] objectForKey:@"Latitude"];
NSString *longitude = [[news objectAtIndex:x] objectForKey:@"Longitude"];
entfernung = 0;
double lat1 = eigLat; //eigener Standort Latitude
double long1 = eigLon; //eigener Standort Longitude
double lat2 = [latitude doubleValue]; //Standort Heurigen Latitude
double long2 = [longitude doubleValue]; //Standort Heurigen Longitude
每次我得到lat1和lat2的0。但只有我在iPhone上运行应用程序。在模拟器上它工作正常。
有人知道为什么会这样吗?
答案 0 :(得分:1)
问题是你在现实世界中还没有获得GPS位置,所以
在调用connectionDidFinishLoading()
之前调用您的方法didUpdateToLocation()
因为eighValue仍然是0。
首先检查有效纬度和经度:
如果两者都是0那么你没有得到一个位置。
我认为你必须改变程序代码的逻辑,
你必须要么
1)等到你有一个位置,然后开始 连接,以便在有GPS坐标后调用connectionDidFinishLoading。
或者 2)存储网络连接的坐标结果,并计算何时获得第一个坐标