2016-07-14 38 views
-1

我試圖在按下按鈕時獲取用戶的位置,但是我無法設置位置代碼。我一直在尋找Stackoverflow上的各種答案,但我無法爲我工作。無法在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)") 
} 

不過,我剛剛得到來自打印尼爾斯在didChangeAuthorizationStatus和從來都沒有從didUpdateLocations打印。我也很困惑在哪裏把startUpdatingLocation()。有些答案將它直接放在viewDidLoad中,正如我在這裏,其他人將它放在didChangeAuthorizationStatus中,我看到它在didLoad中的另一個地方if CLLocationManager.locationServicesEnabled()。什麼是正確的方法來做到這一點?還有我做錯了,我沒有得到任何值打印?我在模擬器上運行,打開位置並允許彈出窗口的權限,並將模擬器設置爲緯度/經度自定義位置,並且我已將值添加到pList中。

編輯:even tried copy/pasting the code from this to get user's location only once但它返回(kCLErrorDomain error 0.)。我在代碼中添加了'requestWhenInUseAuthorization()`,但仍然失敗。從打印

回答

0

GET尼爾斯在didChangeAuthorizationStatus

因爲我們沒有任何的位置呢。這是要求提供這些信息的錯誤地方。發生的一切就是我們現在被授權。

從來都沒有從didUpdateLocations

因爲你在模擬器上運行,也許打印。嘗試在設備上運行。

而且,如果您的目標只是獲取位置並停止,請勿使用startUpdatingLocation;請致電requestLocation。這就是它的目的。

+0

它會幫助你看到有效的代碼嗎? https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch22p773location/ch35p1032location/ViewController.swift – matt

+0

至於'requestLocation',只是在我的編輯中添加了這個,但我試過了,它仍然出現失敗。 https://www.hackingwithswift.com/example-code/location/how-to-request-a-users-location-only-once-using-requestlocation我在模擬器中設置了一個位置,不應該這樣工作嗎?我會嘗試連接我的iPhone,看看它是否有任何不同 –

+0

酷,請讓我知道,如果這有幫助。 – matt