2016-05-09 15 views
0

LocationManagerを使用して位置を取得する頻度を少なくするにはどうすればよいですか?CLLocationManagerで場所を取得する頻度が低い

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 

    print(locations) 

    var truckLocation:CLLocation = locations[0] 

    var latitude = truckLocation.coordinate.latitude 
    var longitude = truckLocation.coordinate.longitude 
    var latitude2 = 37.331469 
    var longitude2 = -122.029825 
    ref.childByAppendingPath("users/\(ref.authData.uid)/lat").setValue(latitude) 
    ref.childByAppendingPath("users/\(ref.authData.uid)/lon").setValue(longitude) 


    var latDelta: CLLocationDegrees = 0.01 
    var lonDelta: CLLocationDegrees = 0.01 

    var span:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, lonDelta) 
    var location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude) 
    var location2: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude2, longitude2) 
    var region: MKCoordinateRegion = MKCoordinateRegionMake(location, span) 
    self.map.setRegion(region, animated: false) 

    var locA: CLLocation = CLLocation(latitude: latitude, longitude: longitude) 
    var locB: CLLocation = CLLocation(latitude: latitude2, longitude: longitude2) 

} 

私のコードの別の部分では、ボタンによって位置の監視がオンとオフになります。しかし、アクティブなときは、現在、新しいロケーションデータを1秒間に1回Firebaseに送信しています。これは、必要以上のものです。どのようにすれば、これらのアップデートを5分という頻度でずっと少なくすることができますか?

+0

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/#//apple_ref/occ/instm/CLLocationManager/allowDeferredLocationUpdatesUntilTraveled:timeout: –

+0

@Joeスローン、あなたがいます具体的にはロケーション更新の頻度が低い場合や、重要なロケーション更新が有効な場合は、 – paulvs

+0

@paulvs重要な変更箇所のアップデートは本当に理想的です! –

答えて

0

これは、自分の場所を一度取得する方法です。 Xcodeのドキュメントを読んだ場合、manager.locationは最後に取得したユーザーの場所を返します。

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     if let userLocation = manager.location { 
     let locValue: CLLocationCoordinate2D = manager.location!.coordinate 
     print("locations = \(locValue.latitude) \(locValue.longitude)") 
     } else { 
     print("we dont need user location for testing") 
     } 

    } 
関連する問題