發(fā)布時間:2022/08/18 點擊數(shù):2779
如果說手繪圖本身是面子,讓人對地圖有第一印象和直觀感受,那么實時導航功能則是地圖的靈魂和里子。沒有實時定位和動態(tài)路徑規(guī)劃導航功能的地圖,只是一個可觀而不可用的花瓶,沒有使用價值。沒有準確的而高效的實時導航算法,就不能把地圖價值在游客手里發(fā)揮到最大。
bellman-ford:可以用于邊權為負的圖,圖中如果有負環(huán),算法會檢測出負環(huán)。時間復雜度O(VE)。
spfa:bellman-ford的優(yōu)化算法,本質是bellman-ford,所以適用性和bellman-ford一樣。時間復雜度O(KE)。
dijkstra:只能用于邊權都為正的圖中。時間復雜度O(n2)。
floyd:也可以用于有負權的圖中,即使有負環(huán),算法也可以檢測出來??梢郧笕我恻c的最短路徑,有向圖和無向圖的最小環(huán)和最大環(huán)。時間復雜度O(n3)。
實現(xiàn)了方向的指引,則手繪地圖導航功能的基礎已經(jīng)具備。
類似于地圖APP的導航功能,直行、轉向等方向提示可以極大的增加導航的使用體驗和實用效果。對于這一點,也可以通過設計算法實現(xiàn)。簡單來說,可以通過用戶前進的方向,結合規(guī)劃的路徑,來判斷前方應當如何轉向。當然,這里的細節(jié)比較復雜,就不展開贅述。而還需要注意的一點就是,判斷用戶是否已經(jīng)偏移路線。
當然,對于確實偏移過大的情況,也不能強行糾偏。因為這種情況,我們其實是不知道到底是用戶確實已經(jīng)偏離太大,還是手機定位出現(xiàn)的較大誤差。這時可以根據(jù)實際情況提示用戶已經(jīng)偏移路線,或者待手機定位自動恢復正常。
視頻展示一個示例。