2016-07-14 10 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に印刷物からのNILSを取得し、何が今まで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

はdidChangeAuthorizationStatus

で印刷物からNILSを取得します。その情報を求めるのは間違った場所です。起こったのは、私たちが今や認可されたことだけです。

何も今まであなたはおそらく、シミュレータ上で実行しているのでdidUpdateLocations

から印刷しません。デバイスで実行してみてください。

あなたの目標が場所を取得して停止するだけの場合は、startUpdatingLocationを使用しないでください。 requestLocationに電話してください。それがそれのためのものです。

+0

動作するコードを確認するのに役立ちますか? 'requestLocation'についてはhttps://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch22p773location/ch35p1032location/ViewController.swift – matt

+0

のように、これを私の編集で追加しましたが、これを試してみました。失敗として現れます。 https://www.hackingwithswift.com/example-code/location/how-to-request-a-users-location-only-once-using-requestlocation私はエミュレータで設定された場所を持っていますが、それは動作しませんか?私は私のiPhoneを接続しようとすると、その異なる場合は –

+0

クール、それが役立つかどうか私に教えてください。 – matt

関連する問題