iPhone で現在の位置を取得し、その座標をいくつかの関数呼び出しに使用したいと考えています。
今、座標にアクセスしたいときに、それらが空であるという問題があります。しかし、デリゲート関数では、それらは何らかの形で取得されますが、保存されません...
の NSLog にdoLocation
は値が表示されませんがlocationmanager
、NSLog に表示されます。または、これは NSLog の問題でしょうか?
#pragma mark - Location handling
-(CLLocationCoordinate2D)doLocation {
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
self.locationManager.distanceFilter = 50;
[self.locationManager startUpdatingLocation];
CLLocation *location = [self.locationManager location];
CLLocationCoordinate2D coordinate = [location coordinate];
NSLog(@"debug: coordinates: %@", coordinate);
return coordinate;
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
if (!oldLocation ||
(oldLocation.coordinate.latitude != newLocation.coordinate.latitude &&
oldLocation.coordinate.longitude != newLocation.coordinate.longitude)) {
currentLat = newLocation.coordinate.latitude;
currentLng = newLocation.coordinate.longitude;
} else { // oldLocation
currentLat = oldLocation.coordinate.latitude;
currentLng = oldLocation.coordinate.longitude;
}
self.currentLoc = [[CLLocation alloc] initWithLatitude:currentLat longitude:currentLng];
NSLog(@"debug: self.currentLoc: %@", self.currentLoc);
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error {
NSLog(@"%@", error);
}
デバッグアウトは次のとおりです。
2013-07-01 15:59:29.382 foobar[3793:c07] デバッグ: 座標: (null) -doLocation 1: 現在の場所:
2013-07-01 15:59:35.399 foobar[3793:c07] デバッグ: self.currentLoc: <+51.50998000,-0.13370000> +/- 0.00m (速度 -1.00 mps / コース -1.00) @ 7/1/13 、午後 3 時 59 分 35 秒中央ヨーロッパ夏時間