iPhone Development - CLLocationManager vs. MapKit
-
25-09-2019 - |
Domanda
Se voglio mostrare userLocation sulla mappa, e allo stesso tempo di record la posizione dell'utente, è una buona idea aggiungere un osservatore per userLocation.location e registrare le posizioni, o devo ancora usare CLLocationManager per la registrazione di utenti ubicazione e l'uso mapView.showUserLocation per mostrare la posizione corrente dell'utente (indicatore blu)? Voglio mostrare l'indicatore blu di default supportati dalle API MapKit.
Inoltre, ecco un esempio di codice di massima:
- (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
// ...
}
Sotto il cofano, penso MKMapView inoltre usa CLLocationManager per ottenere la posizione corrente dell'utente? Quindi, sarà questo crea alcun problema perché credo sia CLLocationManager e MapView cercheranno di utilizzare stessi servizi di localizzazione? Ci saranno conflitti e la mancanza di dati precisi / richiesto o corrente?
Soluzione
SO : CLLocationManager utilizza gli stessi dati in tutte le sue istanze, quindi non c'è nessun conflitto.