CoreLocation - 但适用于室内(Swift 2 / IOS)

时间:2016-03-10 20:03:44

标签: gps swift2 cllocationmanager

我正在为应用程序开发概念验证功能。此应用将在主要在室内使用。预期的结果是能够在按下按钮后跟踪用户是否在室内行进超过3米。我使用CoreLocation工作 - 但结果并没有削减它。数字"跳跃"有时,这会认为这个应用程序无用。

我正在寻找任何可能的替代方案。看着加速度测量仪和测速仪,但仍然觉得GPS / CoreLocation是我最好的选择。 (或者是......?)

我想到的一件事是使用requestLocation,并每隔10秒重新检查一次,看看手机是否超过3米。它不需要是实时的,所以我可以使用10秒缓冲区。这是最好的方法吗? (这方面的缺点是在ios9中引入了requestLocation ...需要ios8及以下的替代解决方案)

这是我的代码(产生GPS"跳跃"):

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    let latestLocation: AnyObject = locations[locations.count - 1]


    if startLocation == nil {
        startLocation = latestLocation as! CLLocation
    }

    let distanceBetween: CLLocationDistance = latestLocation.distanceFromLocation(startLocation)

    distanceLabel.text = String(format: "%.2f", distanceBetween)

    if distanceBetween > 3.0{
        labelOutput.text = "you traveled more than 3 meters"
    }

}

提前致谢..

1 个答案:

答案 0 :(得分:1)

通过处理L1和L2频率的GPS信号(新的GPS卫星的额外L3)来完成GPS定位。离开GPS的信号在经过电离层和对流层后由GPS接收器接收,这有助于使信号失真。测量GPS信号(带有误差)的总行进距离,并根据测量值计算您的位置。已经开发了许多技术来减轻电离和tropo错误。但是如果你在建筑物内部,GPS信号会产生大量的多径误差,这是很难处理的。我想说,对于室内应用,你可能想要考虑结合其他传感器,而不仅仅是GPS。