gpt4 book ai didi

Swift CLLocationManager(didUpdateLocations) 调用过于频繁

转载 作者:搜寻专家 更新时间:2023-10-31 22:33:08 24 4
gpt4 key购买 nike

谁能解释一下,为什么我立即停止更新,但委托(delegate)方法“CLLocationManager(didUpdateLocations)”被调用了 4 次?我只需要一次当前位置:)

import UIKit
import MapKit

class ContactView: UIViewController, CLLocationManagerDelegate {

let clLocationManager = CLLocationManager()

var latitude: AnyObject = 0.000000
var longitude: AnyObject = 0.000000

override func viewDidLoad() {
super.viewDidLoad()
self.nameTextField.delegate = self
clLocationManager.delegate = self
clLocationManager.desiredAccuracy = kCLLocationAccuracyBest
clLocationManager.requestWhenInUseAuthorization()
clLocationManager.startUpdatingLocation()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
CLGeocoder().reverseGeocodeLocation(manager.location!, completionHandler: {
(placemarks, error) -> Void in
self.clLocationManager.stopUpdatingLocation()
if placemarks!.count > 0 {
self.latitude = (manager.location?.coordinate.latitude)!
self.longitude = (manager.location?.coordinate.longitude)!
print(self.latitude)
print(self.longitude)
} else {
print("Error")
}
})
}
}

谢谢!

最佳答案

尝试将 stopUpdatingLocation 从 reverseGeocodeLocation 移到外面

 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
manager.stopUpdatingLocation()
CLGeocoder().reverseGeocodeLocation(manager.location!, completionHandler: {
(placemarks, error) -> Void in
if placemarks!.count > 0 {
self.latitude = (manager.location?.coordinate.latitude)!
self.longitude = (manager.location?.coordinate.longitude)!
print(self.latitude)
print(self.longitude)
} else {
print("Error")
}
})
}
}

关于Swift CLLocationManager(didUpdateLocations) 调用过于频繁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com