CLLocationDegrees返回0,尽管它有一个值

时间:2011-03-25 09:23:36

标签: iphone location

我有一个持有CLLocationCoordinate2D的类。 我得到纬度&来自网络请求的网络经度。

当我在地图上放置一个对象(MKMapView)时,使用CLLocationCoordinate2D对象,一切正常。

但是,当我试图将CLLocationCoordinate2D的纬度或经度(CLLocationDegrees)与其他变量进行比较或将其放入字符串时,我总是得到0(零),尽管它的值是正确的(35.0333 ..,等)

例如:

item.coordinate.latitude是32.816326141357422

(在调试时将光标放在项目上时显示,并在将对象放在地图上时也正确显示)

NSLog(@“lat:%f”,item.coordinate.latitude);的 =>这个输出“lat:0”

NSString * lats = [[NSNumber numberWithDouble:item.coordinate.latitude] stringValue];的 =>这一个拉特变成“0”。

有谁知道如何解决这个问题? 感谢。

1 个答案:

答案 0 :(得分:0)

而不是

NSLog(@"lat: %f", item.coordinate.latitude);

尝试:

NSLog(@"lat: %+.6f", item.coordinate.latitude);

我使用类似于以下内容的东西:

if (![[NSString stringWithFormat:@"%+.6f,%+.6f", locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude] isEqualToString:@"+0.000000,+0.000000"])
{
    // do cool stuff
}

另外,请确保为CLLocationManager设置了委托和委托方法:

- (void)viewDidLoad
{
    [super viewDidLoad];
    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    [locationManager setDistanceFilter:kCLDistanceFilterNone];
    if (locationManager.locationServicesEnabled)
        [locationManager startUpdatingLocation];
}

#pragma mark -
#pragma mark CLLocationManager Delegate Methods

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSDate* eventDate = newLocation.timestamp;
    NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
    if (abs(howRecent) < 15.0)
    {
        NSLog(@"New Latitude %+.6f, Longitude %+.6f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
    }
}