Существует два способа получения местоположения с помощью служб определения местоположения: первый - менее точный, но более экономичный; а второй точнее.
Когда вы объявляете [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];