在iOS中获取准确的位置

时间:2017-09-25 14:30:16

标签: ios swift gps cllocationmanager

我使用此设置设置位置准确度:

locationManager.desiredAccuracy = kCLLocationAccuracyBest

我得到了这个位置:

if let location = locations.first {
....
}

但它多次更新位置,其中许多都不准确。例如,当我找到位置时,它距设备位置约100米。

如何获得准确的位置?

我知道在设备修复该位置之前,前几个位置不准确。

4 个答案:

答案 0 :(得分:4)

来自centerCursor

  

接收器尽力达到要求的准确度;然而,   实际的准确性无法保证。

因此,您无法保证检测到的位置有多近,但您还可以尝试其他一些事项:

  1. 使用https://github.com/zeit/next.js/tree/master/examples/with-custom-reverse-proxy。这样可以让您获得更准确的读数,但需要更多的电池使用成本。

  2. 过滤地点,但我不知道这是否可行,因为您拥有的唯一数据是您使用的位置管理员收到的数据。

答案 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)

查看该位置的horizo​​ntalAccuracy属性(CLLocation)。这以米为单位。您可以使用此属性忽略不够准确的位置读数。