Я реализую местоположение пользователя для IOS с помощью swift. Это мой код.Получение много обновлений местоположения
import UIKit
import CoreLocation
class localizationViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.distanceFilter = 500
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: { (placemarks, error) -> Void in
if (error != nil) {
println("Error: " + error.localizedDescription)
return
}
if placemarks.count > 0 {
let pm = placemarks[0] as CLPlacemark
self.displayLocationInfo(pm)
} else {
println("Error with data")
}
})
}
func displayLocationInfo(placemark: CLPlacemark) {
self.locationManager.stopUpdatingLocation()
var city = placemark.locality
var department = placemark.administrativeArea
var country = placemark.country
var latitude = placemark.location.coordinate.latitude
var longitude = placemark.location.coordinate.longitude
var date = placemark.location.timestamp
println(city)
println(department)
println(country)
println(latitude)
println(longitude)
println(date)
}
func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
println("Error: " + error.localizedDescription)
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
@IBAction func actionLocation(sender: UISwitch) {
println("get location request")
}
}
Я получаю информацию о местоположении должным образом, но всегда обновляется 3 или 4 раза. Я читал, что если вы установили distanceFilter, это остановится, но это не работает для меня. Как я могу настроить my didUpdateLocations для получения только одного места для запроса? Как я могу запустить эту функцию внутри элемента действия (переключатель или кнопка на пример)? Этот последний вопрос, потому что, может быть, причина в том, что всегда, по первому запросу местоположения, приложение не принимает vaules Accuary на дистанционный фильтр ... Thankyou.