本頁使用了標題或全文手工轉換

Leaflet

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Leaflet
Leaflet logo.svg
原作者Vladimir Agafonkin
初始版本2011年5月13日 (2011-05-13)
穩定版本
1.7.1
(2020年9月4日 (2020-09-04)
原始碼庫 編輯維基數據鏈結
程式語言JavaScript
系統平台參見瀏覽器支援
類型JavaScript函式庫
許可協定BSD-2-Clause[1]
網站leafletjs.com

Leaflet是一個開源JavaScript,用於構建Web地圖應用。首次發布於2011年,[2]它支援大多數移動和桌面平台,支援HTML5CSS3。其使用者包括FourSquare、PinterestFlickr

Leaflet允許沒有GIS背景的開發人員非常容易地顯示代管在公共伺服器上的瓦片Web地圖英語tiled web map,並且可以疊加圖層。它可以從GeoJSON檔案中載入地理要素資料,設定樣式,並建立互動式圖層,如點擊時會彈出式視窗的標記。

Vladimir Agafonkin開發了Leaflet,他在2013年加入了Mapbox[3]

使用[編輯]

使用Leaflet的基本例子

Leaflet的典型用法是將Leaflet的「map」元素繫結到HTML元素(例如div)上。然後將圖層和標記添加到map元素中。

 // create a map in the "map" div, set the view to a given place and zoom
 var map = L.map('map').setView([51.505, -0.09], 13);
 
 // add an OpenStreetMap tile layer
 // Tile Usage Policy applies: https://operations.osmfoundation.org/policies/tiles/
 L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
     attribution: '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors'
 }).addTo(map);

Leaflet支援非球面麥卡托投影顯示地圖。[4]Leaflet庫本身可以通過變數L存取。

功能[編輯]

Leaflet原生支援Web地圖服務英語Web Map Service(WMS)層、GeoJSON層、向量層和瓦片層。通過外掛程式支援許多其他類型的圖層。

與其他Web地圖庫一樣,由Leaflet實現的基本顯示模型是一個基本地圖,加上零個或多個半透明覆蓋,上面顯示零個或多個向量物件。

元素[編輯]

主要的Leaflet物件類型有:[5]

  • 柵格類型(TileLayer與ImageOverlay)
  • 向量類型(Path、Polygon,以及特定類型,如Circle)
  • 群組類型(LayerGroup、FeatureGroup與GeoJSON)
  • 控制項(Zoom、Layers等)

還有各種工具類,例如用於管理投影、變換和與DOM互動的介面。

GIS格式支援情況[編輯]

Leaflet的核心支援少數GIS標準格式,其他外掛程式來支援。

標準 支援情況
GeoJSON 良好,通過geoJson函式支援,核心功能[6]
KML、CSV、WKT、TopoJSON、GPX 用Leaflet-Omnivore外掛程式支援[7]
WMS英語Web Map Service 通過TileLayer.WMS[8]子類型支援,核心功能
WFS英語Web Feature Service 不支援,不過有第三方外掛程式。[9]
GML 不支援。[10]

瀏覽器支援[編輯]

Leaflet 0.7支援Chrome、Firefox、Safari 5+、Opera 12+和IE 7-11。[11]

與其他庫的比較[編輯]

Leaflet與OpenLayers之間可以進行比較,因為兩者都是開源的,而且客戶端都只有JavaScript庫。與OpenLayers的230,000行相比,整個庫要小得多,大約有7,000行代碼(截至2015年)。[12]與OpenLayers相比,它的代碼占用空間更小(大約是123KB[13]相比於423KB[14]),部分原因是它使用模組化結構。Leaflet的代碼庫更新,用上了JavaScript的新特性,以及HTML5和CSS3。還有,Leaflet缺乏一些OpenLayers原生支援的特性,比如Web要素服務英語Web Feature Service(WFS),[15]以及EPSG:3857/4326/3395以外的各種投影方式。[16]

它還可以與私有的、封閉原始碼的Google地圖API(2005年推出)和Bing地圖API相比較,後兩者都包含了一個重要的伺服器端組件,提供位址編碼、路徑規劃、搜尋等服務,並與Google地球等功能整合。Google地圖API提供了速度和簡單性,但不是靈活的,只能用於存取Google地圖服務。不過,Google API的新DataLayer 部分確實允許顯示外部資料來源。[17]

外部連結[編輯]

參考文獻[編輯]

  1. ^ License - Leaflet. Leaflet. [2018-11-03]. (原始內容存檔於2021-01-06). 
  2. ^ Lovelace, Robin. Testing web map APIs - Google vs OpenLayers vs Leaflet. [2018-11-03]. (原始內容存檔於2017-11-03). 
  3. ^ MacWright, Tom. Leaflet Creator Vladimir Agafonkin Joins MapBox. 2014-08-06 [2018-11-03]. (原始內容存檔於2015-09-12). 
  4. ^ Top Data Visualization tools by Nataly Otair. 2020-10-08 [2020-09-06]. (原始內容存檔於2020-11-25). 
  5. ^ Leaflet API reference. [2018-11-03]. (原始內容存檔於2021-01-05). 
  6. ^ Using GeoJSON with Leaflet. [2018-11-03]. (原始內容存檔於2020-11-11). 
  7. ^ 存档副本. [2020-12-13]. (原始內容存檔於2020-10-19). 
  8. ^ TileLayer.WMS. [2018-11-03]. (原始內容存檔於2021-01-05). 
  9. ^ 存档副本. [2020-12-13]. (原始內容存檔於2020-09-30). 
  10. ^ Support for GML. 2012-06-23 [2018-11-03]. (原始內容存檔於2016-09-27). 
  11. ^ Features. [2018-11-03]. (原始內容存檔於2021-02-07). 
  12. ^ OpenHub.net comparison between OpenLayers and Leaflet. OpenHub.net. [2018-11-03]. (原始內容存檔於2014-08-08). 
  13. ^ Leaflet frontpage. Leaflet - An Open-Source JavaScript Library for Mobile-Friendly Interactive Maps. [2018-11-03]. (原始內容存檔於2021-02-07). 
  14. ^ OpenLayers 3.4.0 compressed source code. OpenLayers.org. [2018-11-03]. (原始內容存檔於2016-11-29). 
  15. ^ Various plugins providing WFS-support are listed on https://leafletjs.com/plugins.html頁面存檔備份,存於網際網路檔案館
  16. ^ Projection. [2018-11-03]. (原始內容存檔於2021-01-05). 
  17. ^ Data Layer. Google Maps Platform. Google. [2018-11-03]. (原始內容存檔於2021-01-28).