Използвам MKMapView и стартирам картата напоследно известно място с CLLocationManager, проблемът е, че съобщенията за iPhone и местоположенията съобщават, че все още използвам услугите, след като приключа, което поражда известни опасения относно използването на батерията.
Така че, моля, помогнете ми да освободя това правилно.
CLLocationManager * MANG = [[CLLocationManager alloc] init];
[MANG startMonitoringSignificantLocationChanges];
if(MANG.location){
[mapa setCenterCoordinate:MANG.location.coordinate animated:NO];
}
[MANG stopMonitoringSignificantLocationChanges];
[MANG stopUpdatingLocation];
[MANG release];
Отговори:
0 за отговор № 1Има два начина за извличане на местоположението чрез услугите за местоположение: първият, по-малко точен, но по-приятен за батериите; и втората по-точна.
Когато декларирате [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];