我正在开发一个 Android 应用程序,它在两个位置之间具有逐向导航。但是,我一直在努力使导航顺畅。
我从 Google API 调用 Directions Api 来检索路线,并且我已经在地图上显示了它。当切换到逐向导航时,我只需使用位置管理器(同时使用路线和精细位置)将标记设置为新位置(同时为标记设置动画)。一切正常,尽管 gps 和网络提供商有一些不准确的位置,如下面链接中的图片所示。
虽然错误有时不会太大(例如位置设置在街道旁边的人行道上),但只要用户遵循路线,我需要标记始终遵循折线,否则将不得不重新计算路线。此外,当我通过以前的位置和新的位置计算图标的方位时,有时图标会做一些奇怪的事情。
我不想使用任何外部库,因为大多数库不是免费的,并且该应用程序将来不会供个人使用。我的第一个想法是检查我更新位置到折线的距离是否大于 x(比如 5),以便检测这些错误。但是,我的应用程序必须重新计算路线,所以这不是一个有效的选项。我读过卡尔曼算法来检测错误,但人们说gps内部已经使用该算法过滤位置。
所以我需要建议来修复那些不准确的位置,并像 Mapbox、谷歌地图或优步那样进行流畅的导航。
黄线表示我所做的路线,紫色圆圈是不准确的位置。