我正在为应用程序开发概念验证功能。此应用将在主要在室内使用。预期的结果是能够在按下按钮后跟踪用户是否在室内行进超过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"
}
}
提前致谢..
答案 0 :(得分:1)
通过处理L1和L2频率的GPS信号(新的GPS卫星的额外L3)来完成GPS定位。离开GPS的信号在经过电离层和对流层后由GPS接收器接收,这有助于使信号失真。测量GPS信号(带有误差)的总行进距离,并根据测量值计算您的位置。已经开发了许多技术来减轻电离和tropo错误。但是如果你在建筑物内部,GPS信号会产生大量的多径误差,这是很难处理的。我想说,对于室内应用,你可能想要考虑结合其他传感器,而不仅仅是GPS。