Desenvolvimento do iPhone - CllocationManager vs. MAPKIT
-
25-09-2019 - |
Pergunta
Se eu quiser mostrar o UserLocation no mapa e, ao mesmo tempo, gravar a localização do usuário, é uma boa idéia adicionar um observador ao UserLocation.Location e gravar os locais, ou ainda devo usar o CllocationManager para gravar a localização do usuário e usar MapView.ShowUserLocation para mostrar o local atual do usuário (Indicador Azul)? Quero mostrar o indicador azul padrão suportado pela API MAPKIT.
Além disso, aqui está um código de amostra aproximado:
- (void)viewDidLoad {
...
locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = DISTANCE_FILTER_VALUE;
locationManager.delegate = self;
[locationManager startUpdatingLocation];
myMapView.showUserLocation = YES;
[myMapView addObserver:self forKeyPath:@"userLocation.location" options:0 context:nil];
...
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
// Record the location information
// ...
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"%s begins.", __FUNCTION__);
// Make sure that the location returned has the desired accuracy
if (newLocation.horizontalAccuracy <= manager.desiredAccuracy)
return;
// Record the location information
// ...
}
Sob o capô, acho que o MKMapView também usa o CllocationManager para obter o local atual do usuário? Então, isso criará problemas porque acredito que o CllocationManager e o MapView tentarão usar os mesmos serviços de localização? Haverá algum conflito e falta de dados precisos/necessários ou atuais?
Solução
Veja isso Então, entrada: CllocationManager usa os mesmos dados em todas as suas instâncias, para que não haja conflito.