locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 1
locationManager.startUpdatingLocation()
我想将distanceFilter的距离设置为1米。 我认为它不能正常工作。 我想知道distanceFilter的最小距离
还有一件事!
CLLocationManager 的 distanceFilter 属性无法正常工作
我看到了这个页面,我认为那个人说还有比 distanceFilter 更好的东西。 这是什么?
我在公交车上,经纬度变化很快。但我不确定公交车每移动一米它们都会改变。
但我不确定公交车每移动一米它们都会改变。
distanceFilter
并不意味着“每n米更新一次”。
distanceFilter
,顾名思义,是一个过滤器。位置更新以一定的速度进行,并且 distanceFilter
会删除(即过滤掉)其中一些更新,具体取决于它们与上次更新的距离。这不控制“何时”生成更新。更新由设备上的 GPS 生成,并且可以按照需要的频率进行更新。
为了获得最多的更新,您不会过滤掉任何内容。如果您不设置 distanceFilter
,这就是
CLLocationManager
的行为方式。 distanceFilter
的默认值为 kCLDistanceFilterNone
,因此您也可以根据需要使用它。在模拟器上运行,我每秒都会收到位置更新。如果您想要更频繁地更新,从技术上讲,您可以重复调用
locationManager.requestLocation()
。
let lm = CLLocationManager()
override func viewDidLoad() {
...
lm.delegate = self
lm.requestLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// here you can check if the updated locations are far enough apart from the previous update
print("Updated!")
// after receiving a location, request again
lm.requestLocation()
}
也就是说,这将重复启动和停止定位服务。我不确定苹果是否会喜欢这样。