基於Leaflet和GraphHopper的離線路徑規劃
轉載文章:https://blog.csdn.net/water_21215/article/details/79290275
轉載文章:https://blog.csdn.net/u014712516/article/details/60872310
leaflet是一個為建設移動裝置友好的互動地圖,而開發的現代的、開源的JS庫,只有33K,設計簡單、高效、可用性好,支援多瀏覽器,支援外掛擴充套件,有一個友好的,易於使用的api文件和一個簡單的、可讀的原始碼。
leaflet通過leaflet.routing.machine外掛,支援路徑規劃。通過經由點控制路線搜尋,顯示行程和替代路線。預設使用 OSRM,但也支援 GraphHopper, Mapbox Directions API等等。在這個地圖中,只有
離線路徑=資料包+路徑規劃演算法,好在GraphHopper是開源的,路徑規劃演算法的jar包可以從Maven庫找到,資料包可以根據GitHub上下載的GraphHopper專案資源獲取,步驟如下。
1、從openstreetmap匯出中國地圖資料,我是從Geofabrik裡獲取的osm.bpf檔案(我用的是中國地圖資料),
2、從git下載graphhopper專案資原始檔夾,cmd,進入當前資料夾,執行./graphhopper.sh web +下載的pbf檔案,生成相關路徑資料,自動生成一個xx-gh的資料夾,裡邊就是進行路徑規劃所需要的地圖資料了,(osm.bpf中國整個地圖可能會造成jvm的溢位,加到jvm最大記憶體就好了,我增大到了2G)
3、匯入graphhopper相關jar包(這個是我用到的jar包),寫離線路徑的後臺,這個是我的後臺,你也可以根據GraphHopper的文件來處理
4、封裝成前臺需要的資料格式,我是為了基於leaflet的外掛
5、資料是基於WGS84座標,要轉換成百度的BD09座標,匯入coordtrans的jar包,進行轉換,我們專案用的是百度地圖的瓦片,而GraphHopper是基於谷歌地圖的,座標系不一樣,需要轉化下,如果直接用谷歌座標的話可以不做處理,地理座標相關內容可參考著篇文件。
到此就實現了基於Leaflet和GraphHopper的離線路徑規劃,其實離線路徑規劃主要是GraphHopper的後臺處理,有了點座標,就可以在地圖上畫出來了。
感謝manmantj的幫助,我是先看到他的文章才完成的《基於openstreemap地圖資料的離線路徑規劃》http://blog.csdn.net/u014712516/article/details/60872310