2016-04-11 6 views
5

したがって、iOS9に新しいrequestLocation()メソッドがあります。私は1つだけの場所の更新を取得するためにそれを使用しようとしていますが、それはdidUpdateLocationsに複数回ヒットします。iOS 9のrequestLocation()はdidUpdateLocationデリゲートを複数回呼び出します

これは一度しか呼び出さないとしますか?私はdistanceFilterを1000.0に設定していますので、すぐに復帰するのにはかなり幅があります。何か案は ?

デリゲートメソッド内でstopUpdatingLocation()を呼び出しても、依然としてデリゲートの3ヒットが得られます。

注:同じ行動は、私が代わりにStartUpdatingLocationを使用する場合、私は、ユーザーの現在の国を取得するようつだけのリターンをしたいので、事前

感謝をreversegeocoderする場所を養う発生する。ここでコード:

func getLocationOneTime(accuracy: Double){ 
    print("Acquiring location one time - accuracy requested:\(accuracy)") 
    locationManager.distanceFilter = accuracy 
    locationManager.desiredAccuracy = accuracy 
    // Start gpsOneTimeTimeout timer 
    gpsTimeoutTimer = NSTimer.scheduledTimerWithTimeInterval(gpsOneTimeTimeout, target: self, selector: #selector(self.reportTimeout), userInfo: nil, repeats: false) 
    locationManager.requestLocation() 
    } 
+0

ここでコードでこのメソッドを呼び出していますか? –

+0

@Jessは上記のコードを更新しました – jelipito

+0

私は同じ現象を見ています。私はそれをバグと見なします。それはキャッシングと関係があります(あなたが取得している場所のタイムスタンプを見ればわかります)。 – matt

答えて

4

通常、私はちょうど最初の呼び出し

後に何も変更デリゲート関数を防ぐためにif文を使用してこの種の問題のためにこの場合、

あなただけの私がどうなる場所を探している場合:

let locationManager = CLLocationManager() 
var userLocation: CLLocation! 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    if userLocation == nil { 
     if let location = locations.first { 
      userLocation = location 
      self.locationManager.stopUpdatingLocation() 
     } 
    } 
} 

は編集:私はこのためにリンゴのドキュメントを見ていたし、あなたが正しいことをやっている、私はあなたができるでしょう疑い妥当な手段によって悲しいことにそれを防ぐことができます。

関連する問題