Leafletは、インタラクティブ地図のためのオープンソースJavaScriptライブラリである。GeoJSONなどの地理データを読み込み・スタイル付けし、タイルベースのWeb地図やインタラクティブなレイヤー(クリック時にポップアップを表示するマーカー等)を容易に扱える。

Leafletは2011年に初公開され、軽量なコアと豊富なプラグインで機能拡張できる。著名な採用例として、Foursquare、Pinterest、Flickr、米国地質調査所(USGS)などが挙げられている。

開発者はVolodymyr(Vladimir) Agafonkinで、2013年にMapboxへ参加した。

使用例 Leafletの典型的な使い方としては、spanやdivなどのHTML要素にLeafletの"map"オブジェクトをバインドする。 そしてそのmapオブジェクトにレイヤーやマーカーを追加する。 // "map" divに地図を作成し、指定した場所とズームで表示する var map = L.map('map').setView([51.505, -0.09], 13);

// OpenStreetMapタイルレイヤーを追加する L.tileLayer('https://tile.osm.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' }).addTo(map); 変数Lを使ってLeafletライブラリそのものにアクセスできる。

機能

Leafletは基本機能としてWMS(Web Map Service)レイヤー、GeoJSONレイヤー、ベクターグラフィックスレイヤー、タイルレイヤーに対応している。 プラグインを使うとそれ以外にも多くのレイヤーに対応できる。

Leafletの基本的な表示モデルは、他のWeb地図ライブラリと同様に、1個のベースマップとその上に表示される0個以上の半透明のオーバーレイ、0個以上のベクターオブジェクトからなる。

構成要素 Leafletの主なオブジェクトのタイプは次の通りである:

ラスタータイプ (TileLayer と ImageOverlay) ベクタータイプ (Path, Polygon, Circle) グループタイプ (LayerGroup, FeatureGroup, GeoJSON) コントロール (Zoom, Layers, など) 他に様々なユーティリティクラスが存在する(地図投影のためのインターフェイスクラス、変形、DOMの操作など)。

GISフォーマットへの対応状況 Leafletは少数のGIS標準フォーマットに対応しており、それ以外への対応はプラグインによって実現されている。

標準 対応状況 GeoJSON 良好。geoJson 関数により標準でサポートされている。 KML, CSV, WKT, TopoJSON, GPX Leaflet-Omnivore プラグインによりサポートされている。https://github.com/mapbox/leaflet-omnivore WMS TileLayer.WMSにより標準でサポートされている 未対応。ただしサードパーティによるプラグインは存在するhttps://github.com/Georepublic/leaflet-wfs。 GML 未対応。https://github.com/Leaflet/Leaflet/issues/547

ブラウザ対応状況 Leaflet 1.3.4(2018年現在)はデスクトップでChrome, Firefox, Safari 5+, Opera 12+, IE 7-11、モバイルにおいてSafari for iOS 7+、Android browser 2.2+, 3.1+, 4+、Chrome for mobile、Firefox for mobile、IE10+ for Win8 devicesをサポートしている。

他の地図ライブラリとの比較 LeafletとOpenLayersはどちらもオープンソースでクライアントサイドのみのJavaScriptライブラリであるため、直接に比較できる。 Leafletの方がはるかに小さく、2015年の時点でLeafletのソースコードは7,000行、OpenLayersは230,000行である。 ライブラリのファイルサイズもLeafletの方が小さい。 Leafletの方がコードベースが新しく、JavaScriptの最新の機能とHTML5、CSS3を利用している。しかし機能面ではOpenLayersにありLeafletにないものがある。 WFS(Web Feature Service)やEPSG 3785以外の投影法へのネイティブサポートなどである。

LeafletはプロプライエタリでクローズドソースのGoogle Maps APIやBing Maps APIとも比較できる。 Google Maps APIは高速、シンプル、柔軟性に富むが、Google Mapsサービスにアクセスするためにしか使えない。ただしGoogleのAPIのDataLayerを使うと外部データソースを表示できる 。

歴史 Leafletは2010年、当時Agafonkinが働いていた地図プロバイダCloudMadeのためのWeb地図API JavaScriptライブラリとして生まれた。 2011年5月、CloudMadeはLeafletの最初のリリースを発表した。それは改めて作り直されたものだったが、古いAPIコードの一部を流用したものだった。 0.1: 2011年5月17日 0.2: 2011年6月18日 0.3: 2012年2月14日 0.4: 2012年7月30日 0.5: 2013年1月17日

このリリースはRetina対応と多くのユーザビリティ、ユーザエクスペリエンスの改善を含んでいた 。 0.6: 2013年6月26日

このリリースはAPIのメソッドとイベントの範囲を拡大し、GeoJSONの保存機能を追加した。これはMapboxの援助による2日間のコードスプリントで完成した 。 0.7: 2013年11月22日

このリリースはバグ修正にフォーカスし、リファクタリングと後方非互換性の可能性がまもなく来ることを公表した。

1.0: Sep 27, 2016

このリリースは、v0.7.7 と比較し 400 を超える変更があった。主な改善点は:

ライブラリ全般、特にベクターレイヤーのパフォーマンスの改善。 鳥瞰アニメーション(カーブ状のズームとパン)。 分数ズームレベルのサポート。 タイルロードのアルゴリズムの改善。点滅を減らした。 カスタム区画(pane)管理。複数のベクターレイヤー区画、差し込みベクターやタイルレイヤーを含む。 標準でない投影法のサポートの改善。 アクセシビリティ機能の追加。 ドキュメントの改善。 安定性の改善。

参考文献

外部リンク

openstreetmap:leaflet Leaflet Tutorials