2016-04-11 14 views
0

MapKitとCoreLocationを使用してiOSアプリケーションを構築しています。ユーザーが実際に移動したときに確認する

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    self.setupUI() 

    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    self.mapView.delegate = self 
    self.locationManager.startUpdatingLocation() 
    self.mapView.showsUserLocation = true 
    geoCoder = CLGeocoder() 
} 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     let location: CLLocation = locations.last! 
     //  self.addressView.text = "\(location.coordinate.latitude) \(location.coordinate.longitude)" 

     geoCode(location) 
     if (zoomed == false) { 
      zoomToUserLocationAnimated(true) 
      zoomed = true 
     } 
    } 

この機能は、ユーザーが移動しなくても呼び出されます。私はOSX上でiOSシミュレータを使用しています。私は場所をシミュレートしていますので、シミュレータは動かないとは思っていますが、まだこの関数が呼び出されています。ユーザが作成したかどうかを確認する方法があるかどうかを知りたい実際の動き?

ありがとうございました

+0

どのようにLocation Managerサービスを開始していますか? – Abizern

+0

私の編集を参照してください:) –

+0

[startMonitoringSignificantLocationChanges()](https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/#//apple_ref/occ/instm/CLLocationManager/startMonitoringSignificantLocationChanges)を試してみてください。 'startUpdatingLocation() 'の代わりに – Abizern

答えて

0

前の場所と現在の場所を比較する必要があります。しかし、場所は決して正確ではありませんので、何らかのエラーと比較してください。

location.distanceTo(prevLocation) > 3

CLLocation.horizontalAccuracyおよびCLLocation.verticalAccuracyも参照してください。

場所はGPSから計算されることが多く、GPS衛星も移動することに注意してください。

もう1つの方法は、速度location.speed > Xを確認することです。ここで、Xはゼロ以外の値です(ここでも、ゼロに対してチェックすることはあまり安全ではありません)。

+0

downvoterさんからコメントしてもらえますか? – Sulthan

関連する問題