我有一个持有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”。
有谁知道如何解决这个问题? 感谢。
答案 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);
}
}