Я пишу приложение, которое, среди прочего, будет иметь функцию, где он показывает адрес и долготу/широту, где находится пользователь.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
Было бы лучше использовать 'NSNumberFormatter' для преобразования чисел в строки, чтобы они выглядели корректно с учетом локали пользователя. – rmaddy
Спасибо за быстрый ответ. Но он, похоже, не работает. Я помещал команды NSLog в код, и казалось бы, что он не запускает throught (void) startSignificantChangeUpdates и менеджер (location) locationManager: (CLLocationManager *) didUpdateLocations: (NSArray *) местоположения ... только (void) viewDidLoad .. –
@ KnutGjærde Это может показаться глупым, но случайно ли вы отключили службы определения местоположения для этого приложения? – fumoboy007