2016-08-03 22 views
0

In meinem Code muss ich meinen Benutzer Standort initialisieren: Es funktioniert gut.User Location wird automatisch

Aber immer wenn ich meinen Standort ändern möchte (indem ich eine Adresse auswähle oder auf dem Bildschirm wische), bringt mich meine App zurück zu meinem Benutzerort.

Ich fand ein bisschen eine Antwort auf that post. Aber ich rufe nicht . Also ich weiß nicht was ich machen soll.

Ruft meine App häufig ViewDidLoad()?

Hier ist mein Code, wo ich meine Standorte initialisieren.

var usrLocation: CLLocationManager! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    if (CLLocationManager.locationServicesEnabled()) { 
     usrLocation = CLLocationManager() 
     usrLocation.delegate = self 
     usrLocation.requestAlwaysAuthorization() 
     usrLocation.requestLocation() 
     usrLocation.startUpdatingLocation() 
    } 
    mapView.delegate = self 
} 

Auch kann ich nicht nur meine usrLocation.requestLocation() Funktion löschen, muß ich bei dem Start des App auf meinem Benutzer zu zentrieren. Ich dachte daran, es anderswo anzurufen, aber ich habe keine Ahnung wo?

+1

Rufen Sie nicht 'requestLocation()' und 'startUpdatingLocation()' auf. Rufen Sie 'requestLocation()' auf, wenn Sie nur einmal den aktuellen Standort des Benutzers abrufen möchten, und 'startUpdatingLocation()', wenn Sie fortlaufende Standortaktualisierungen wünschen. – dan

+0

Oh, das war es. Danke vielmals. Sie sollten es in eine echte Antwort setzen :) –

Antwort

0

So, wie dan sagte, war das Problem, dass ich nicht requestLocation() und startUpdatingLocation(). nennen sollte

So jetzt mein Code ist so, und es funktioniert perfekt:

var usrLocation: CLLocationManager! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    if (CLLocationManager.locationServicesEnabled()) { 
     usrLocation = CLLocationManager() 
     usrLocation.delegate = self 
     usrLocation.requestAlwaysAuthorization() 
     usrLocation.requestLocation() 
    } 
    mapView.delegate = self 
} 
1

Sie implementiert haben
usrLocation.startUpdatingLocation()

Dies wird fortlaufend aktualisiert. Sobald Sie also auf einen anderen Speicherort zeigen, wird der Benutzerstandort aktualisiert.

Entfernen Sie diese Zeile, der Code wird funktionieren.

+1

Ich weiß, ich postete es vor 20 Minuten :) Danke –

+1

Sicher, ich habe das nicht überprüft, aber großartig, Sie finden die Lösung :) –