我使用此设置设置位置准确度:
locationManager.desiredAccuracy = kCLLocationAccuracyBest
我得到了这个位置:
if let location = locations.first {
....
}
但它多次更新位置,其中许多都不准确。例如,当我找到位置时,它距设备位置约100米。
如何获得准确的位置?
我知道在设备修复该位置之前,前几个位置不准确。
答案 0 :(得分:4)
来自centerCursor:
接收器尽力达到要求的准确度;然而, 实际的准确性无法保证。
因此,您无法保证检测到的位置有多近,但您还可以尝试其他一些事项:
使用https://github.com/zeit/next.js/tree/master/examples/with-custom-reverse-proxy。这样可以让您获得更准确的读数,但需要更多的电池使用成本。
过滤地点,但我不知道这是否可行,因为您拥有的唯一数据是您使用的位置管理员收到的数据。
答案 1 :(得分:3)
多年来的核心位置经验。 GPS芯片需要一段时间才能“预热”,有时会在锁定之前报告几个位置。您将在室内体验这一点,而不是清晰地看到天空。带有金属屋顶的建筑物也会影响精度。但是,如果gps更新是使用distanceFilter属性(以米为单位指定)distanceFilter进入/超出某个阈值并使用此属性horizontalAccuracy设置所需的准确度,则可以忽略这些更新。
答案 2 :(得分:1)
您可以检查每次更新的准确性,并过滤位置,直到它们达到可靠的准确性为止。
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print(manager.location!.horizontalAccuracy)
if locations.last!.horizontalAccuracy <= manager.desiredAccuracy{
print(manager.location)
}
}
答案 3 :(得分:0)
查看该位置的horizontalAccuracy属性(CLLocation)。这以米为单位。您可以使用此属性忽略不够准确的位置读数。