2013-10-26 77 views
2

以下代碼導致空座標。奇怪的是UIAlert提示應用程序在用戶可以選擇「是」之前使用當前位置。位置管理器給出空座標

我的代碼,我已經使用:

CLLocationManager *locationManager; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
[locationManager startUpdatingLocation]; 
locationManager = [[CLLocationManager alloc] init]; 
locationManager.distanceFilter = kCLDistanceFilterNone; 
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; 
[locationManager startUpdatingLocation]; 
float latitude = locationManager.location.coordinate.latitude; 
float longitude = locationManager.location.coordinate.longitude; 
NSLog(@"%.8f",latitude); 
NSLog(@"%.8f",longitude); 

的NSLog的打印0.0000000兩個座標。

謝謝!

+0

我做UILabels分別設置文本的座標,但仍然有臨時UIalert的同樣的錯誤和座標仍然0.000000 – user2402616

回答

7

你得到0的原因是因爲外景經理並沒有在這一點(它已經開始思考)

你需要設置你的類作爲外景經理的代表收集的任何數據(即提供每當檢索到新位置時調用的函數),並保留您的位置管理器。

// Inside .m file 

@interface MyClass() <CLLocationManagerDelegate> // Declare this class to implement protocol CLLocationManagerDelegate 

@property (strong, nonatomic) CLLocationManager* locationManager; // Retains it with strong keyword 

@end 

@implementation MyClass 

// Inside some method 

    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.delegate = self; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    self.locationManager.distanceFilter = kCLDistanceFilterNone; 
    [self.locationManager startUpdatingLocation]; 

// Delegate method 
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 
    CLLocation* loc = [locations lastObject]; // locations is guaranteed to have at least one object 
    float latitude = loc.coordinate.latitude; 
    float longitude = loc.coordinate.longitude; 
    NSLog(@"%.8f",latitude); 
    NSLog(@"%.8f",longitude); 
} 
+0

它的工作原理,但我拿到三雙的座標,而不是之一。我實現了viewDidLoad中的所有self。「」參數。不知道這是否有所作爲。有任何想法嗎?另外,當我重新加載屏幕時,它會根據需要打印出一對。 – user2402616

+1

這些數組意味着包含應用程序以某種方式「錯過」的位置(不知道這意味着什麼,也許應用程序忙或在後臺)。通常最後一個就足夠了,但這一切都取決於你製作的應用程序。例如,如果您試圖記錄用戶*所在的位置(移動歷史記錄),則可能需要讀取整個數組。 –

+0

我做了一些調試,它似乎是多次調用locationManager函數。任何方式在這個? – user2402616