2013-05-06 2 views
0

Я пытаюсь много вещей, чтобы остановить обновление моего приложения местоположения, но ничего не кажется, работа ...Местоположения еще мониторинг после locationManager = ноля и stopUpdatingLocation называется

Что мне делать? (Учитывая пост: StopUpdatingLocation method not working for iOS5):

// Initialise my locationManager and start monitoring : 
locationManager = [[CLLocationManager alloc] init]; 
[locationManager startUpdatingLocation]; 

// .. Some code to use the coordinates that locationManager gives me. 

// To stop monitoring : 
locationManager = nil; 

Вы должны знать, я поместил [locationManager stopUpdatingLocation]; в методе:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations 

Так местоположение обновляется только один раз (кстати сказать мне, если это хорошая идея…).

Я также попытался поставить [locationManager stopUpdatingLocation]; непосредственно перед locationManager = nil; в основном коде, но синяя точка, которая дает мне мое местоположение все еще движется на моей карте в обоих случаях ...

Я также установить таймер, который печатать locationManager объект в консоли, и он дает мне (null), тем временем синяя точка все еще перемещается на моем iPhone 5, поэтому я не понимаю, что ...

Или, может быть, точка все еще перемещается из-за другой вещи, но не из-за locationManager Обновить ?

У меня, конечно, что-то не хватает, но я не понимаю, что: /.

Спасибо за идеи и помощь.

+0

// Инициализировать мое locationManager и начать мониторинг: locationManager = [[CLLocationManager alloc] init]; [locationManager startUpdatingLocation]; // .. Некоторый код для использования координат, которые дает locationManager. // Остановить мониторинг: locationManager = nil; все это одним способом? это было бы неправильно. – tzl

+0

Да, это ..? Что не так ? :/ – Lucien

+0

, потому что менеджер местоположений уже назначен ноль. вы больше не сможете получить к нему доступ в callback locationManager: didUpdateLocations: поэтому, если вы разместили [locationManager stopUpdatingLocation] в обратном вызове, это не повлияет. – tzl

ответ

4

Одна возможность: Синяя точка, перемещающаяся на вашей карте, связана с тем, что вы установили MKMViewView в значение YES. Он будет отслеживать до тех пор, пока вы не установите его в НЕТ.

Другая возможность: Эта линия является неправильным:

locationManager = nil; 

Это делает не мониторинг стоп, но это делает потому что вы не в состоянии обратиться к менеджеру местоположения, так что теперь вы не может остановить мониторинг! Вырежьте эту линию.

+0

Спасибо за ответ. Но я думал, что 'showUserLocation' является просто« отображаемым »свойством синей точки MKMapView, поэтому для меня это не означает, что мониторинг местоположения прекращается. Поэтому для меня установка 'showUserLocation' в НЕТ не остановит задачу фонового мониторинга. Я не прав ? И я не понимаю, почему синяя точка все еще движется, если местоположение не обновлено :). Место не должно оставаться неизменным из-за отсутствия обновлений значений координат. Я снова не прав? – Lucien

+0

Прочтите документы. «* Пока это свойство ДА *, отображение карты * продолжает отслеживать местоположение пользователя * и * обновлять * это периодически». – matt

+0

Хорошо, мой плохой ... Спасибо за ответы. – Lucien

0

я столкнулся с той же проблемой, что даже после того, как я разместил код

[locationManager stopUpdatingLocation]; 
locationManager=nil; 

мое приложение использует GPS сервис, который был не-обязательно потреблять мощность батареи. решение этой проблемы - отключить свойство showUserLocation MKMapView.

[self.mapView setShowsUserLocation:NO]; 

Поскольку MKMapView продолжает использовать свой GPS service даже если LocationManager равна нулю.

Надеется, что это поможет вам

0

Используйте этих строки кода

[self.locationManager stopUpdatingLocation]; 
self.locationManager.delegate = nil; 
self.locationManager = nil; 

спасибо!

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