【发布时间】:2017-06-27 08:31:46
【问题描述】:
我使用 locationManager.startUpdatingLocation() 获取用户的位置,然后调用一个处理我所有逻辑的函数,问题是它似乎被多次调用,我不知道为什么。
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
输出本身是正确的,但它会一次打印出多个打印件。而且我不希望代码运行多次,每个间隔只运行一次。
【问题讨论】:
标签: swift xcode swift3 cllocationmanager