接上文《手繪地圖制作的關鍵點之“圖層覆寫”》,繼續來聊聊手繪地圖另外一個關鍵點, 那就是“實時導航”, 作者:輕輕的煙霧(z281099678) 之前在《景區手繪地圖(電子地圖、智慧導覽系統)如何制作》說過:
如果說手繪圖本身是面子,讓人對地圖有第一印象和直觀感受,那么實時導航功能則是地圖的靈魂和里子,沒有實時定位和動態路徑規劃導航功能的地圖,只是一個可觀而不可用的花瓶,沒有使用價值,沒有準確的而高效的實時導航演算法,就不能把地圖價值在游客手里發揮到最大,

一、實時導航的最短路徑演算法
但凡與地圖相關的產品,都有一個重要的核心,那就是最短路徑的計算,手繪地圖當然也不例外,甚至說更是其中的典型, 最短路徑問題,是圖論研究中的一個經典演算法問題,這里的“圖”的概念,和通常意義的圖不一樣,而是由結點和路徑組成的一組資料,而最短路徑則旨在尋找圖中兩結點之間的最短路徑, 最短路演算法常見的幾種:bellman-ford、、spfa、floyd,每種演算法的思想都有所差異甚至完全不同,適用的場景也各不相同,這里簡略聊聊各自的特點,bellman-ford:可以用于邊權為負的圖,圖中如果有負環,演算法會檢測出負環,時間復雜度O(VE),
spfa:bellman-ford的優化演算法,本質是bellman-ford,所以適用性和bellman-ford一樣,時間復雜度O(KE),
dijkstra:只能用于邊權都為正的圖中,時間復雜度O(n2),
floyd:也可以用于有負權的圖中,即使有負環,演算法也可以檢測出來,可以求任意點的最短路徑,有向圖和無向圖的最小環和最大環,時間復雜度O(n3),

二、實時導航的方向指引
在手繪地圖里,用戶的實時方向,是導航的基礎, 用戶根據自己面對的方向,才能確定導航點位的方向,換言之,才知道當前應該往哪個方向前進, 而這一點至關重要的功能的實作,則需要接觸HTML5的陀螺儀介面,現在絕大部分的設備都支持此介面,當然,是細節上,安卓設備和蘋果設備有一些差異,我們在實作的時候注意兼容即可,實作了方向的指引,則手繪地圖導航功能的基礎已經具備,

指北針指示方向
三、實時導航的路徑資訊
當前實時的道路資訊主要包括:前方的轉向以及距離,類似于地圖APP的導航功能,直行、轉向等方向提示可以極大的增加導航的使用體驗和實用效果,對于這一點,也可以通過設計演算法實作,簡單來說,可以通過用戶前進的方向,結合規劃的路徑,來判斷前方應當如何轉向,當然,這里的細節比較復雜,就不展開贅述,而還需要注意的一點就是,判斷用戶是否已經偏移路線,

導航提示資訊
四、實時導航的智能糾偏
手機的定位不可能十分精確,總是在一個區間范圍內隨機的跳躍,如果按照手機回傳的經緯度來定位,則用戶會非常活躍的在一個范圍內跳躍,這容易讓人感覺很迷茫,也非常影響體驗,降低實用效果, 因此,我們這里需要設計方案來進行智能糾偏,結合導航的規劃路徑,以及當前的定位,還參考前進的速度、方向等引數,把用戶的位置控制在比較真實而友好的位置,當然,對于確實偏移過大的情況,也不能強行糾偏,因為這種情況,我們其實是不知道到底是用戶確實已經偏離太大,還是手機定位出現的較大誤差,這時可以根據實際情況提示用戶已經偏移路線,或者待手機定位自動恢復正常,

糾偏資訊
五、演示案例

展示一個示例,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/502242.html
標籤:其他
