distanceFilter(CLLocationManager)的最小距离

问题描述 投票:0回答:1
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 1
locationManager.startUpdatingLocation()

我想将distanceFilter的距离设置为1米。 我认为它不能正常工作。 我想知道distanceFilter的最小距离


还有一件事!

CLLocationManager 的 distanceFilter 属性无法正常工作

我看到了这个页面,我认为那个人说还有比 distanceFilter 更好的东西。 这是什么?

我在公交车上,经纬度变化很快。但我不确定公交车每移动一米它们都会改变。

ios swift iphone core-location
1个回答
0
投票

但我不确定公交车每移动一米它们都会改变。

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()
}

也就是说,这将重复启动和停止定位服务。我不确定苹果是否会喜欢这样。

© www.soinside.com 2019 - 2024. All rights reserved.