iPhone Desarrollo - CLLocationManager vs MapKit
-
25-09-2019 - |
Pregunta
Si quiero mostrar userLocation en el mapa, y al mismo tiempo récord la ubicación del usuario, ¿es una buena idea añadir un observador a userLocation.location y registrar los lugares, o debería seguir utilizando CLLocationManager para el registro de usuario ubicación y uso mapView.showUserLocation para mostrar la ubicación actual del usuario (indicador azul)? Quiero mostrar el indicador azul por defecto con el apoyo de la API MapKit.
Además, aquí hay un código de ejemplo áspera:
- (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
// ...
}
Bajo el capó, creo que también utiliza MKMapView CLLocationManager para obtener la ubicación actual del usuario? Por lo tanto, será este crea ningún problema porque creo tanto CLLocationManager y MapView intentarán utilizar los mismos servicios de ubicación? Habrá conflictos y la falta de datos precisos / requerido o actuales?
Solución
Ver este entrada : CLLocationManager utiliza los mismos datos a través de todas sus instancias, por lo que hay no hay conflicto.