Frage

Wenn ich will auf der Karte userLocation zeigen und zugleich Aufzeichnung der Position des Benutzers, ist es eine gute Idee, einen Beobachter zu userLocation.location und notieren Sie die Standorte hinzuzufügen, oder sollte ich noch CLLocationManager verwenden für Benutzer Aufnahme Lage und Nutzung mapView.showUserLocation dem Benutzer aktuellen Standort (blaue Anzeige) zu zeigen? Ich mag die Standard-blaue LED-Anzeige durch die MapKit API unterstützt zeigen.

Auch hier ist ein grober Beispielcode:

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

Unter der Haube, ich denke, MKMapView verwendet auch CLLocationManager Benutzer aktuellen Standort zu bekommen? So wird, erstellen Sie diese Probleme, weil ich beide CLLocationManager und MapView glauben versuchen gleichen Standort-Dienste zu benutzen? Wird es Konflikte und Mangel an genauen / erforderlich oder aktuelle Daten?

War es hilfreich?

Lösung

Sehen Sie diese SO Eintrag : CLLocationManager die gleichen Daten in allen seinen Instanzen verwendet, so ist es kein Konflikt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top