CLLocationDegrees возвращает 0, хотя оно имеет значение - PullRequest
0 голосов
/ 25 марта 2011

У меня есть класс, который содержит CLLocationCoordinate2D.Я получаю широту и долготу из Интернета с помощью веб-запроса.

Когда я помещаю объект на карту (MKMapView), используя объект CLLocationCoordinate2D, все работает нормально.

Но, когда я пытаюсь сравнить широту или долготу (CLLocationDegrees) CLLocationCoordinate2D с другими переменными или поместить его в строку, я всегда получаю 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 голосов
/ 24 августа 2011

Вместо

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

try:

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);
    }
}
...