一区二区精品_久久精品美女_在线成人动漫av_国产精品午夜国产小视频

COMPANY NEWS

行業動態
手繪地圖制作的關鍵點之“實時導航”

發布時間:2022/08/18 點擊數:2836

接上文《手繪地圖制作的關鍵點之“圖層覆蓋”》,繼續來聊聊手繪地圖另外一個關鍵點。
那就是“實時導航”。
作者:輕輕的煙霧(z281099678)
之前在《景區手繪地圖(電子地圖、智慧導覽系統)如何制作》說過:

如果說手繪圖本身是面子,讓人對地圖有第一印象和直觀感受,那么實時導航功能則是地圖的靈魂和里子。沒有實時定位和動態路徑規劃導航功能的地圖,只是一個可觀而不可用的花瓶,沒有使用價值。沒有準確的而高效的實時導航算法,就不能把地圖價值在游客手里發揮到最大。

實時導航的手繪地圖

一、實時導航的最短路徑算法

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

floyd:也可以用于有負權的圖中,即使有負環,算法也可以檢測出來。可以求任意點的最短路徑,有向圖和無向圖的最小環和最大環。時間復雜度O(n3)。

帶權圖
我們的手繪地圖的路徑規劃算法,則主要用到了dijkstra和floyd。因為dijkstra算法較為高效,而地圖里的點,每兩個點的距離,一定是正數,不可能兩點之間的距離為負。而floyd算法雖然效率較慢,但是他很強大,他可以直接計算出一個地圖里所有點之間的路徑。
所以針對不同場景,我們采取了兩者結合的方案。

二、實時導航的方向指引

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


實現了方向的指引,則手繪地圖導航功能的基礎已經具備。



指北針指示方向

三、實時導航的路徑信息

當前實時的道路信息主要包括:前方的轉向以及距離。


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



導航提示信息

四、實時導航的智能糾偏

手機的定位不可能十分精確,總是在一個區間范圍內隨機的跳躍。如果按照手機返回的經緯度來定位,則用戶會非常活躍的在一個范圍內跳躍。這容易讓人感覺很迷茫,也非常影響體驗,降低實用效果。
因此,我們這里需要設計方案來進行智能糾偏。結合導航的規劃路徑,以及當前的定位,還參考前進的速度、方向等參數,把用戶的位置控制在比較真實而友好的位置。


當然,對于確實偏移過大的情況,也不能強行糾偏。因為這種情況,我們其實是不知道到底是用戶確實已經偏離太大,還是手機定位出現的較大誤差。這時可以根據實際情況提示用戶已經偏移路線,或者待手機定位自動恢復正常。



糾偏信息

五、演示案例



視頻展示一個示例。


更多
400-155-6865
主站蜘蛛池模板: 新泰市| 泰顺县| 山东省| 桓台县| 固镇县| 平乡县| 常山县| 奉节县| 阿克| 志丹县| 白水县| 平泉县| 德清县| 吴忠市| 保山市| 西乡县| 玉田县| 水富县| 徐州市| 津南区| 泰顺县| 崇文区| 泰来县| 奉节县| 祁阳县| 南涧| 宝兴县| 九龙城区| 塔河县| 游戏| 浑源县| 渝北区| 江西省| 平利县| 莱阳市| 株洲市| 晴隆县| 阿拉善右旗| 广昌县| 孝昌县| 巴中市|