2013-08-28 1 views
0

Я пишу приложение, которое, среди прочего, будет иметь функцию, где он показывает адрес и долготу/широту, где находится пользователь.locationManager возвращает 0.0000, где ошибка?

Я установил locationManager, и, надеюсь, правильно преобразовал поплавки в строки, но когда я тестирую приложение, он все равно отображается как 0,00000.

Возникла ли проблема в местоположенииManager? или информация как-то затерялась? У меня есть код здесь:

Благодарности

// 
// StartVC.m 
// Etterforskning 
// 
// Created by Knut Gjærde on 8/28/13. 
// Copyright (c) 2013 Knut G. All rights reserved. 
// 

#import "StartVC.h" 

@interface StartVC() { 
/* IBOutlet UILabel * _Gatenavn; 
    IBOutlet UILabel * _Gatenr; 
    IBOutlet UILabel * _Postnr; 
    IBOutlet UILabel * _Poststed; */ 
    IBOutlet UILabel * _Lengdegrad; 
    IBOutlet UILabel * _Breddegrad; 
    float Breddegrad; 
    float Lengdegrad; 
} 

@property (assign, nonatomic) CLLocationDistance distanceFilter; 
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy; 


@end 


@implementation StartVC 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    _Breddegrad.text = [NSString stringWithFormat:@"%1.6f", Breddegrad]; 
    _Lengdegrad.text = [NSString stringWithFormat:@"%1.6f", Lengdegrad]; 

} 


- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (void)startSignificantChangeUpdates 
{ 
    CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 

    if (nil == locationManager) 
     locationManager = [[CLLocationManager alloc] init]; 

    locationManager.delegate = self; 
    [locationManager startMonitoringSignificantLocationChanges]; 
} 


- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations { 
    // If it's a relatively recent event, turn off updates to save power 
    CLLocation* location = [locations lastObject]; 
    NSDate* eventDate = location.timestamp; 
    NSTimeInterval howRecent = [eventDate timeIntervalSinceNow]; 
    if (abs(howRecent) < 15.0) { 
     // If the event is recent, do something with it. 
     Breddegrad = location.coordinate.latitude; 
     Lengdegrad = location.coordinate.longitude; 
    } 
} 


@end 

ответ

1

Вы не обновляя свои метки. Вы должны перенести следующее на другой метод и вызвать его в locationManager:didUpdateLocations:.

_Breddegrad.text = [NSString stringWithFormat:@"%1.6f", Breddegrad]; 
_Lengdegrad.text = [NSString stringWithFormat:@"%1.6f", Lengdegrad]; 
+0

Было бы лучше использовать 'NSNumberFormatter' для преобразования чисел в строки, чтобы они выглядели корректно с учетом локали пользователя. – rmaddy

+0

Спасибо за быстрый ответ. Но он, похоже, не работает. Я помещал команды NSLog в код, и казалось бы, что он не запускает throught (void) startSignificantChangeUpdates и менеджер (location) locationManager: (CLLocationManager *) didUpdateLocations: (NSArray *) местоположения ... только (void) viewDidLoad .. –

+0

@ KnutGjærde Это может показаться глупым, но случайно ли вы отключили службы определения местоположения для этого приложения? – fumoboy007