2013-11-07 1 views
0

Можем ли мы получить текущее местоположение пользователя «Этот синий шар, который анимируется», когда наше устройство отключено. Когда я попытался получить текущее местоположение пользователя и зарегистрировать его, я получаю 0,00000 для обоих долгота и широта здесь - это код, который я использовал для получения текущего местоположения пользователя. Я использую ipad mini для его проверки. Я также добавил CLLocationManagerDelegate в файл .h.Можем ли мы показать местоположение пользователя в автономном режиме в MKMapview

- (void)viewDidLoad { 
    [self getUserLocation]; 
     self.myMapView.showsUserLocation = YES; 

} 
-(void)getUserLocation{ 
if ([CLLocationManager locationServicesEnabled]) { 
    locationManager = [[[CLLocationManager alloc] init] autorelease]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; 
    [locationManager startUpdatingLocation]; 
}else{ 
    NSLog(@"User location Disabled"); 
} 


} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
CLLocation *currentGPSLocation = newLocation; 

if (currentGPSLocation != nil) { 
    currentLocation.latitude = self.myMapView.userLocation.coordinate.latitude; 
    currentLocation.longitude = self.myMapView.userLocation.coordinate.longitude; 

    currentLocationWalk.latitude=self.myMapView.userLocation.coordinate.latitude; 
    currentLocationWalk.longitude=self.myMapView.userLocation.coordinate.longitude; 
    NSLog(@"didUpdateToLocation: %f,%f", self.myMapView.userLocation.coordinate.latitude,self.myMapView.userLocation.coordinate.longitude); 
    statusLabel.textColor = [UIColor blackColor]; 
    statusLabel.text = [NSString stringWithFormat:@"%f",self.myMapView.userLocation.coordinate.latitude]; 
    statusLabel1.text = [NSString stringWithFormat:@"%f",self.myMapView.userLocation.coordinate.longitude]; 



} 

} 
+1

Что значит "в автономном режиме? Нет подключения к интернету вообще (без Wi-Fi и без сотовой связи) или в режиме самолета? – Craig

ответ

0

Вы не используете ARC (я настоятельно рекомендую использовать его, чтобы избежать большинства ошибок управления памятью!).
Поэтому может быть, что «locationManager» - это переменная экземпляра, которая не сохраняется (возможно, вы не объявили ее как сохраненное свойство).
В этом случае он может быть выпущен уже тогда, когда ваш код вернется в основной цикл запуска, в котором пул автозаполнения слит.

+0

Я даже не получаю мяч для пользователя в автономном режиме – user2963674

+0

Пожалуйста, убедитесь, что ваш менеджер местоположений НЕ выдается автоматически, когда вы возвращаетесь к циклу событий, т. Е. Что ваше хранилище locationManager iVar сохраняется. В противном случае у вас не будет менеджера местоположений, который мог бы дать вам местоположение пользователя. –

0

Эта линия

locationManager = [[[CLLocationManager alloc] init] autorelease]; 

не является хорошей идеей.

определить местоположениеManager как объект недвижимости, init locationManager in viewDidLoad(), но удалите autorelease!

и в locationManager разблокировки, только тогда, когда ViewController выгружается (там, где вы отпускаете другие свойства)

+0

Вышеприведенный код работает отлично, но im использует iPad mini, чтобы проверить его, не имеет GPS – user2963674

+0

Он работает на удачу, когда он покидает метод, менеджер местоположений может быть автореклассирован, прежде чем можно будет вызвать обратный вызов. И вы alocate экземпляр менеджера loctaion evry время вы вызываете getLocation(), это не очень хорошая идея. – AlexWien

Смежные вопросы