本文是一個學習leaflet的索引說明文檔,因爲leaflet的官方文檔非常清晰詳實,所以,只要知道大體的方向,就能很好的自學。
一、leaflet優勢
前端地圖框架不少,leaflet憑藉簡單、易用、上手快、拓展多、輕量級等優點,一直深受歡迎,由github上的點星量就可見一斑。
1.簡單上手快
如果說,學習使用騰訊、百度、高德圖商的前端js api的難度是1,那麼學習使用leaflet的難度也是1。而且相對於封裝性很強的圖商js api,leaflet更靈活,更可配置,能加載更多的地圖,設置更豐富的效果。
leaflet不像openlayer那樣,過於嚴格遵守OGC WMS規範,對使用者的GIS背景知識要求過高。開發者即使對GIS知識所知甚少,也能用leaflet開發出漂亮的專題地圖,我就見過連經緯度都搞不明白的開發者使用leaflet開發地圖,效果做的還很漂亮。
如果不想跟GIS綁定太死,追求簡單的開發體驗和豐富的視覺效果,那麼可以選擇leaflet。
2. step-by-step教程豐富
打開leaflet的首頁,https://leafletjs.com/index.html
映入眼簾的就是一個簡單的地圖加載demo。
進入示例頁,https://leafletjs.com/examples.html。有各種各樣的教程。
Every tutorial here comes with step-by-step code explanation and is easy enough even for beginner JavaScript developers.
每個教程都帶有逐步的代碼說明,即使對於初學JavaScript的開發人員來說也很容易。
點擊Leaflet Quick Start Guide進去,https://leafletjs.com/examples/quick-start/
既可以參看step-by-step的引導,也可以點擊See this example stand-alone,在新窗口中把Quick Start - Leaflet.html頁面打開,並保存在本地。
保存的Quick Start - Leaflet.html是一個靜態html,可以直接在瀏覽器中打開,效果與網頁版(https://leafletjs.com/examples/quick-start/example.html)一樣。
用sublime打開Quick Start - Leaflet.html,即可查看前端代碼,非常方便,不用安裝各種框架引擎編譯,對初學者來說,簡直不要太友好。
如果覺得英文教程有點喫力,那麼Chrome瀏覽器一鍵翻譯值得擁有。
3.移動端友好
leaflet一大應用方向就是移動端開發,正如它的簡介說明。
an open-source JavaScript library for mobile-friendly interactive maps
一個開放源代碼的JavaScript庫,用於對移動端友好的交互式地圖。
leaflet可以很好的兼容IOS和Android系統,通過內置函數,可以獲取設備座標,並將地圖縮放到當前位置。可以用leaflet開發出一個簡單的H5頁面,嵌入到APP中。
官網上的demo:https://leafletjs.com/examples/mobile/
4.良好的兼容性
因爲leaflet使用人數多,所以很多熱門的前端框架,都對它進行了集成。例如vue。
如何在vue中擴展leaflet,可參見:https://github.com/vue-leaflet/Vue2Leaflet。
但被vue集成的leaflet,缺失了很多拓展性,也可以直接在vue框架中引入leaflet.js。
5.線上demo多
leaflet官網:https://leafletjs.com/examples.html
github上的專題:https://github.com/Leaflet/
谷歌、百度,都能搜到很多使用leaflet製作地圖的例子。
繪製頁面、熱力圖、軌跡圖等等。
leaflet的地圖繪製頁面:https://github.com/Leaflet/Leaflet.draw,下載下來,打開html文件就可以直接使用,可以打開leaflet-draw-latest.html頁面進行索引。
帶吸附功能的繪製修改頁面,https://github.com/makinacorpus/Leaflet.Snap。
但說實話,用leaflet來編寫幾何圖形繪製修改頁面,的確施繪體驗不是很好,比不上openlayer。
leaflet的強項還是在展示和交互上,而非在幾何圖形處理上。
leaflet聚類:https://github.com/Leaflet/Leaflet.markercluster
leaflet熱力圖:https://github.com/pa7/heatmap.js
leaflet軌跡圖:https://github.com/ewoken/Leaflet.MovingMarker
6.擴展多,效果炫酷
leaflet有豐富的擴展,可以自行查詢https://leafletjs.com/plugins.html。
捲簾、熱力、軌跡、過渡、鑲嵌等,我們想要實現的地圖效果,幾乎都不需要自己寫函數,通過引用leaflet的插件都能實現。這極大降低了難度,只要關注交互效果即可,不用過於關心實現原理,這對不瞭解地圖原理的人來說是個福音。
leaflet也兼容arcgis、supermap等GIS軟件平臺,這對使用商業軟件的人來說,也是個好消息,因爲leaflet的易用性和可拓展性,是要強於arcgis和supermap的js api的。
除了專題地圖外,leaflet也可以用於遊戲地圖的開發,它還有嵌入視頻的功能。
二、leaflet入門
照着官網的教程,就能完成leaflet入門。
可以使用leaflet創建手機地圖、熱力圖、軌跡圖、動態圖等,leaflet在展示渲染上,有很好的的優勢。
但是leaflet在幾何對象的交互上,還是有點弱的,所以如果目的是提供繪製修改幾何對象的頁面,可以採用openlayer。