CLLocationCoordinate2D返回纬度和经度的整数而不是double

时间:2014-02-04 06:33:13

标签: objective-c cocoa-touch ios7 cllocationcoordinate2d

我正在使用CLLocation获取当前位置,如下所示:

-(void)loadCurrentLocation{
if (manager==nil) {
    manager=[[CLLocationManager alloc]init];
}

manager.delegate=self;
manager.desiredAccuracy=kCLLocationAccuracyBest;
[manager startUpdatingLocation];

}

- (void) viewDidLoad {
   [super viewDidLoad];
   [self loadCurrentLocation];

 }
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
CLLocation *loc=newLocation;
if (loc!=nil) {
    self.latitude=loc.coordinate.latitude; //1
    self.longitude=loc.coordinate.longitude; //2
    NSLog(@"Gained Latitude:%.f",self.latitude);
    NSLog(@"Gained Longitude:%.f",self.longitude);
}

}

鉴于latitude文件中longitude.h声明如下:

@interface Prayers :UIViewController<CLLocationManagerDelegate>
@property double longitude;
@property double latitude;
@end

问题是第1行和第1行的返回值2是整数,如30和31,我期待它们像31.37703360000000400030.016893900000000000,那么为什么返回的值是整数而不是double?提前谢谢

1 个答案:

答案 0 :(得分:1)

如果类型不符合您的预期,Xcode可能会给您转换警告。是什么让你认为他们不是你回来的双打?也许框架只是四舍五入到最接近的程度并将其作为双精度返回?

另一种可能性。如果您的日志看起来像

那会怎么样?
NSLog(@"Gained Latitude:%.2f",self.latitude);

是否打印更准确(请注意,格式为2)。


甚至可能尝试将它们装箱作为NSNumber并查看打印内容:

    NSLog(@"Gained Latitude:%@", @(self.latitude));