Ich versuche, den Standort des Nutzers zum Zeitpunkt der Tastendruck zu bekommen, aber Ich habe Probleme, den Standortcode einrichten. Ich habe zwischen verschiedenen Antworten auf Stackoverflow gesucht, aber ich kann nichts für mich arbeiten.Mühe, eine einmalige Benutzer-Standort in Swift
class MyViewController: UIViewController, CLLocationManagerDelegate {
var locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedAlways || status == .AuthorizedWhenInUse {
let latitude = self.locationManager.location?.coordinate.latitude
let longitude = self.locationManager.location?.coordinate.longitude
print("coordinates:")
print(latitude)
print(longitude)
}
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let locationValue : CLLocationCoordinate2D = manager.location!.coordinate
print("locations = \(locationValue.latitude) \(locationValue.longitude)")
}
Allerdings bekomme ich nur nils aus den Abzügen in didChangeAuthorizationStatus
und nichts jemals druckt aus didUpdateLocations
. Ich bin auch wirklich verwirrt darüber, wo man startUpdatingLocation()
setzen. Einige Antworten legen Sie es direkt in viewDidLoad
wie ich hier habe, andere legen Sie es in didChangeAuthorizationStatus
, und ich sah einen anderen Ort, um es im Inneren eines if CLLocationManager.locationServicesEnabled()
in didLoad. Was ist der richtige Weg, dies zu tun? Und was habe ich falsch gemacht, dass ich keine Werte drucken kann? Ich verwende den Emulator, lasse den Standort aktivieren und erlaube Berechtigungen im Popup-Fenster und lasse den Emulator auf einen benutzerdefinierten Ort (lat/long) setzen, und ich habe die Werte in pList hinzugefügt.
edit: even tried copy/pasting the code from this to get user's location only once aber es gibt (kCLErrorDomain error 0.)
. Ich habe einen 'requestWhenInUseAuthorization() `zu ihrem Code hinzugefügt, aber es schlägt immer noch fehl.
Würde es Ihnen helfen, Code zu sehen, der funktioniert? https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch22p773location/ch35p1032location/ViewController.swift – matt
wie für 'requestLocation', addierten gerade in meinem bearbeiten, aber ich versuchte dies und es immer noch kommt als Misserfolg auf. https://www.hackingwithswift.com/example-code/location/how-to-request-a-users-location-only-once-using-requestlocation Ich habe im Emulator eine Stelle gesetzt, sollte diese Arbeit nicht? Ich werde versuchen, mein iPhone zu verbinden, obwohl und wenn es anders ist –
Cool, lass es mich wissen, wenn das hilft. – matt