发布时间:2022/08/18 点击数:2132
如果说手绘图本身是面子,让人对地图有第一印象和直观感受,那么实时导航功能则是地图的灵魂和里子。没有实时定位和动态路径规划导航功能的地图,只是一个可观而不可用的花瓶,没有使用价值。没有准确的而高效的实时导航算法,就不能把地图价值在游客手里发挥到最大。
bellman-ford:可以用于边权为负的图,图中如果有负环,算法会检测出负环。时间复杂度O(VE)。
spfa:bellman-ford的优化算法,本质是bellman-ford,所以适用性和bellman-ford一样。时间复杂度O(KE)。
dijkstra:只能用于边权都为正的图中。时间复杂度O(n2)。
floyd:也可以用于有负权的图中,即使有负环,算法也可以检测出来。可以求任意点的最短路径,有向图和无向图的最小环和最大环。时间复杂度O(n3)。
实现了方向的指引,则手绘地图导航功能的基础已经具备。
类似于地图APP的导航功能,直行、转向等方向提示可以极大的增加导航的使用体验和实用效果。对于这一点,也可以通过设计算法实现。简单来说,可以通过用户前进的方向,结合规划的路径,来判断前方应当如何转向。当然,这里的细节比较复杂,就不展开赘述。而还需要注意的一点就是,判断用户是否已经偏移路线。
当然,对于确实偏移过大的情况,也不能强行纠偏。因为这种情况,我们其实是不知道到底是用户确实已经偏离太大,还是手机定位出现的较大误差。这时可以根据实际情况提示用户已经偏移路线,或者待手机定位自动恢复正常。
视频展示一个示例。