2017-02-15 21 views
2

このアプリを作成すると、ユーザーの所在地を取得する必要があります。すべて正常に動作します。つまり、位置情報サービスの使用を受け入れてから実際の場所を取得するまでの時間です5秒のように - これは普通ですか? 、CLLocationManagerの位置が遅いです。Swift

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Ask for Location-Authorisation from the User. 
    self.locationManager.requestWhenInUseAuthorization() 

    if CLLocationManager.locationServicesEnabled() { 
     locationManager.delegate = self 
     locationManager.requestLocation() 
    } 

    mapView.delegate = self 

} 



func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let locValue: CLLocationCoordinate2D = manager.location!.coordinate 

    let initialLocation = CLLocation(latitude: locValue.latitude, longitude: locValue.longitude) 

    self.centerMapOnLocation(initialLocation) 
} 

func locationManager(manager: CLLocationManager, didFailWithError error: NSError) { 
    print("could not get location") 
} 

しかし、アプリケーションからの時間がcenterMapOnLocation-関数に置くために場所を取得します。それははるかに速く行く 私が使用した他のアプリ..

は、ここに私のコードは次のようになります。ちょうどかなり長いようです。ユーザーの場所を取得するときに、何が予想されますか?私は無線LAN接続でテストしています。だから、インターネットが遅いか、それとも悪い接続なのかがわかりません...

誰でもアイデアはありますか? :)

よろしくお願いします! requestLocation()のドキュメントから

+0

精度を設定して、locationManager.startUpdatingLocation()を使用してみてください。私はそれをして、1秒以内に答えを得る(デバイス上で)。 –

+0

恐ろしい! locationManager.startUpdatingLocation()がトリックを行いました!私はそれを.requestLocation()と交換し、今は魅力のように働いています!ありがとう@JensPeter - あなたに正しい答えを与えたいと思っていますが、私はそれをコメントとして書くことはできません:/答えを書くと私はそれを受け入れます:) –

答えて

2

精度を設定し、locationManager.startUpdatingLocation()を使用してください。私はそれをして、1秒以内に答えを得る(デバイス上で)。

1

この方法すぐに戻ります。それを呼び出すと、位置管理者に(数秒かかる場合があります)が取得され、その結果でデリゲートのlocationManager(_:didUpdateLocations :)メソッドが呼び出されます。

Source

だから、基本的に、すべてのものは、それがフレームワークが構築されているだけの方法です、あなたのコードで結構です。

+0

私の経験上、requestLocation()はかなり遅い(2x-3x) startUpdatingLocation()と比較して結果を返す –

関連する問題