Здравствуйте, я получаю местоположение пользователя с помощью locationManager.startUpdatingLocation(), который затем вызывает функцию, которая обрабатывает всю мою логику, проблема заключается в том, что она называется несколько раз, и я не могу понять, почему.Я пытаюсь получить обновления по местоположению с заданным интервалом в swift 3, но он выполняет мою функцию много раз каждый интервал, он должен запускаться только один раз
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let locValue:CLLocationCoordinate2D = manager.location!.coordinate
print("locations = \(locValue.latitude) \(locValue.longitude)")
long = locValue.longitude
lat = locValue.latitude
if(self.arrayOfCellData.count > 0)
{
for i in 0...self.arrayOfCellData.count-1
{
getdistance(lat0: self.arrayOfCellData[i].shop.latitude!, long0: self.arrayOfCellData[i].shop.longitude!, lat1: locValue.latitude, long1: locValue.longitude)
{distance in
self.arrayOfCellData[i].meterstolocation = distance
}
}
DispatchQueue.main.async {
self.myTable.reloadData()
}
}
print("stopped updating")
locationManager.stopUpdatingLocation()
}
var run: Bool = true;
func updateLocations()
{
if(run)
{
run = false;
}
else
{
locationManager.startUpdatingLocation()
}
}
override func viewDidLoad() {
super.viewDidLoad()
//
locationManager.requestAlwaysAuthorization()
//
//
//
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.startUpdatingLocation()
Timer.scheduledTimer(timeInterval: 10,
target: self,
selector: #selector(self.updateLocations),
userInfo: nil,
repeats: true)
}
мой выход:
locations = 37.33228724 -122.05833354
stopped updating
locations = 37.33228724 -122.05833354
stopped updating
locations = 37.33228724 -122.05833354
stopped updating
locations = 37.33228724 -122.05833354
stopped updating
locations = 37.33228724 -122.05833354
сам выход правильно, но он выплевывает несколько отпечатков на одном дыхании. И я не хочу, чтобы код запускался несколько раз, только один раз за интервал.
Заранее спасибо.
Но разве это не плохо, если вы продолжаете ее обновлять? Или это хорошо, чтобы позволить этому сделать это? –
Предполагается, что Apple будет работать так же, что лучше контролировать, когда он отправляет вам обновления, чем пытаться управлять им вручную. Если вам не нужны обновления в течение длительного времени, выключите его. – simonWasHere
Если это так, как это должно быть сделано плохо, пусть это так, то спасибо :) –