Question

Si je veux montrer userLocation sur la carte, et en même temps record de l'emplacement de l'utilisateur, est-ce une bonne idée d'ajouter un observateur à userLocation.location et enregistrer les emplacements, ou devrais-je utiliser encore CLLocationManager pour l'enregistrement utilisateur emplacement et l'utilisation mapView.showUserLocation pour montrer l'emplacement actuel de l'utilisateur (indicateur bleu)? Je veux montrer la valeur par défaut indicateur bleu pris en charge par l'API MapKit.

En outre, voici un code rugueux exemple:

- (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
    // ...
}

Sous le capot, je pense que MKMapView utilise également CLLocationManager pour obtenir l'emplacement actuel de l'utilisateur? Donc, cela créera des problèmes parce que je crois que les deux CLLocationManager et MapView vont essayer d'utiliser les mêmes services de localisation? Qu'il y aura des conflits et le manque de données précises / requis ou en cours?

Était-ce utile?

La solution

Voir cette SO entrée : CLLocationManager utilise les mêmes données sur toutes ses instances, donc il y a pas de conflit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top