我使用CLLocationManager來獲得設備的當前位置,我試圖讓location
物業,以獲得的經度和緯度如下:CLLocationManager沒有得到位置
-(void)getCurrentLocation{
CLLocationManager *manager=[[CLLocationManager alloc]init];;
manager.delegate=self;
manager.desiredAccuracy=kCLLocationAccuracyBest;
self.currentLocation=manager.location;
NSLog(@"Current Lat :%f",self.currentLocation.coordinate.latitude);
NSLog(@"Current Long :%f",self.currentLocation.coordinate.longitude);
[manager startUpdatingLocation];
}
鑑於:
self.currentLocation is a property inside my class (Which is the CLLocationManagerDelegate) as follows:
.H
@property(nonatomic,strong) CLLocation *currentLocation;
並在.M吸氣劑是如下:
-(CLLocation *)currentLocation{
if (!_currentLocation) {
_currentLocation=[[CLLocation alloc]init ];
}
return _currentLocation;
}
我忘了說我已經實現了didUpdateToLocation
方法如下:
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
NSLog(@"didUpdateToLocation");
CLLocation *loc=newLocation;
if (loc!=nil) {
self.currentLocation=loc;
}
}
我也試圖把這個聲明startUpdateLocation
調用之後:
self.currentLocation=manager.location;
問題是,當我打電話給以前的功能getCurrentLocation
其內的兩個NSLogs打印0.000000
這意味着manager.location
不工作,奇怪的是,第一個NSLog裏面didUpdateToLocation
不打印,預先感謝
你應該實現'CLLocationManagerDelegate'方法(特別是'locationManager:didUpdateLocations:')並且等到你在那裏調用。您應該查看啓動位置管理器並等待響應的過程作爲異步過程。 – Rob
請注意,didUpdateToLocation自iOS 6.0起棄用!相反,請使用didUpdateLocations。 您的問題是您的代理方法直到以後的時間點才被調用。可能是10毫秒,或幾秒鐘。取決於GPS信號等。 嘗試並將NSLog調用移動到委託方法中,如下例所示。 – MartinHN