こんにちは私は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
出力自体は正しいですが、それは一度に複数のプリントを出してくれる。そして、コードを複数回実行する必要はなく、間隔ごとに1回だけ実行する必要があります。
ありがとうございます。
しかし、それを更新し続けるのは悪いことではありませんか?それともそうするのはいいですか? –
これはAppleのように動作するように意図されています。手動で試して制御するよりも、アップデートを送信するときに制御するほうがはるかに優れています。長い間更新が必要ない場合は、スイッチをオフにしてください。 – simonWasHere
それはそれが悪いやり方にされている方法があればそれはそのようになりましょうありがとう:) –