位置更新的时间间隔更短
Shorter time interval for location updates
我的应用高度基于 CLLocation
时间戳。我发现 CLLocationManager
以 ~1s 的间隔更新位置。这对我的应用程序来说还不够。是否可以配置 CLLocationManager
以更短的时间间隔更新位置,或者我应该寻找其他方法(计时器 + 手动询问位置)?
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.allowsBackgroundLocationUpdates = true
locationManager.distanceFilter = kCLDistanceFilterNone
if #available(iOS 11.0, *) {
locationManager.showsBackgroundLocationIndicator = true
}
locationManager.startUpdatingLocation()
计时器 + requestLocation()
不起作用。
您无法更改位置更新的频率。只有超过 distanceFilter 的值,位置服务才会更新。
如果要强制更新位置,请尝试更改 distanceFilter 的值(以米为单位,双精度数据类型)。您可以使用 kCLDistanceFilterNone 作为 distanceFilter 的值。
试试:
locationManager.distanceFilter = kCLDistanceFilterNone
此代码将强制定位服务在位置或每次移动有任何微小变化时通知您。
您不能更改更新频率。但你可能不需要那个。您可以使用 CMMotionManager
框架计算 phone 位置,您可以使用 CLLocationManager
框架获取用户位置。
使用accelerometer
计算设备移动。从 didAccelerate method
您可以获得 x
、y
和 z
的移动,因此通过将其应用于检测到的用户位置,您可以计算新的设备位置。
希望这对您有所帮助,祝您好运。
我的应用高度基于 CLLocation
时间戳。我发现 CLLocationManager
以 ~1s 的间隔更新位置。这对我的应用程序来说还不够。是否可以配置 CLLocationManager
以更短的时间间隔更新位置,或者我应该寻找其他方法(计时器 + 手动询问位置)?
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.allowsBackgroundLocationUpdates = true
locationManager.distanceFilter = kCLDistanceFilterNone
if #available(iOS 11.0, *) {
locationManager.showsBackgroundLocationIndicator = true
}
locationManager.startUpdatingLocation()
计时器 + requestLocation()
不起作用。
您无法更改位置更新的频率。只有超过 distanceFilter 的值,位置服务才会更新。 如果要强制更新位置,请尝试更改 distanceFilter 的值(以米为单位,双精度数据类型)。您可以使用 kCLDistanceFilterNone 作为 distanceFilter 的值。 试试:
locationManager.distanceFilter = kCLDistanceFilterNone
此代码将强制定位服务在位置或每次移动有任何微小变化时通知您。
您不能更改更新频率。但你可能不需要那个。您可以使用 CMMotionManager
框架计算 phone 位置,您可以使用 CLLocationManager
框架获取用户位置。
使用accelerometer
计算设备移动。从 didAccelerate method
您可以获得 x
、y
和 z
的移动,因此通过将其应用于检测到的用户位置,您可以计算新的设备位置。
希望这对您有所帮助,祝您好运。