CLLocationManager не останавливается / не выпускается - PullRequest
0 голосов
/ 25 октября 2011

Я использую MKMapView и запускаю карту в последнем известном месте с помощью CLLocationManager, проблема в том, что iPhone и Location Services сообщают, что я все еще пользуюсь услугами после того, как я закончу, что вызывает некоторые опасения по поводу батареи использование.

Итак, пожалуйста, помогите мне выпустить это правильно.

CLLocationManager * MANG = [[CLLocationManager alloc] init];
[MANG startMonitoringSignificantLocationChanges];
if(MANG.location){
   [mapa setCenterCoordinate:MANG.location.coordinate animated:NO];
}
[MANG stopMonitoringSignificantLocationChanges];
[MANG stopUpdatingLocation];
[MANG release];

1 Ответ

0 голосов
/ 25 октября 2011

Существует два способа получения местоположения с помощью служб определения местоположения: первый - менее точный, но более экономичный; а второй точнее.

Когда вы объявляете [myLocationManager startMonitoringSignificantLocationChanges], ваш iPhone проверяет местоположение каждый раз, когда вы покидаете сотовую вышку и входите в новую. Когда вы объявляете [myLocationManager startUpdatingLocation], ваш iPhone проверяет местоположение каждый раз, когда GPS обнаруживает изменение положения (возможно, каждые 1-3 метра, в зависимости от точности).

Итак, дело в том, что в вашем коде вы дважды пытаетесь остановить объявленный диспетчер расположений. Просто удалите вторую инструкцию остановки, и вы получите правильный код:

CLLocationManager * MANG = [[CLLocationManager alloc] init];
[MANG startMonitoringSignificantLocationChanges];
if(MANG.location){
   [mapa setCenterCoordinate:MANG.location.coordinate animated:NO];
}
[MANG stopMonitoringSignificantLocationChanges];
[MANG release];
...