更新位置的时间间隔更短

时间:2018-03-01 00:25:45

标签: ios swift gps core-location

我的应用程序高度基于CLLocation时间戳。我发现CLLocationManager以~1s间隔更新位置。这对我的应用来说还不够。是否可以配置CLLocationManager以更短的间隔更新位置,还是应该寻找其他方法(定时器+手动询问位置)?

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.allowsBackgroundLocationUpdates = true
locationManager.distanceFilter = kCLDistanceFilterNone
if #available(iOS 11.0, *) {
    locationManager.showsBackgroundLocationIndicator = true
}
locationManager.startUpdatingLocation()

计时器+ requestLocation()无效。

2 个答案:

答案 0 :(得分:4)

您无法更改更新频率。但你可能不需要那样做。您可以使用CMMotionManager框架计算手机排名,然后使用CLLocationManager框架获取用户位置。

使用accelerometer计算设备移动。从didAccelerate method开始,您可以获得移动的xyz,因此,通过将其应用于检测到的用户位置,您可以计算新的设备位置。

希望这会有所帮助,祝你好运。

答案 1 :(得分:1)

您无法更改位置更新的频率。只有在超出distanceFilter的值时,才会更新位置服务。 如果要强制进行位置更新,请尝试更改distanceFilter的值(以米为单位,双精度数据类型)。您可以使用kCLDistanceFilterNone作为distanceFilter的值。 试试:

locationManager.distanceFilter = kCLDistanceFilterNone

如果位置或每次移动发生任何微小变化,此代码将强制位置服务通知您。