Labo288

プログラミングのこと、GISのこと、パソコンのこと、趣味のこと

LeafletでGeoJsonを読み込む


はじめに

オープンソースのWeb地図なら、Leafletが使いやすくてよいです。たとえばOpenStreetMapのタイル地図を実装する場合、以下のとおりです。

//地図を表示するdiv要素のidを設定
var map = L.map('map_container');
//地図の中心とズームレベルを指定
map.setView([45.0,143.0], 5);
//表示するタイルレイヤのURLとAttributionコントロールの記述を設定して、地図に追加する
var tileLayer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{
    attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>',  }).addTo(map);

このように簡単に書けます。ただ地図を表示したいならこれだけで終わりですが、Web上で動作するGISを作ろうと思っていて、ならば各種図形データにも対応していなきゃならんだろうと、いうことで。なんとLeafletはデフォルトでGeoJSONの読み込みに対応しています。実装したのが以下。

コード

function add_geojson(geojson){
    var myStyle = {
        "color": "#000000",
        "weight": 1,
        "opacity": 0.65
    };
    L.geoJSON(geojson,{
            style:myStyle,
            }).addTo(map);
}

mapは別途定義済み。
事前に、GeoJSONファイルをJavaScriptオブジェクトとして(上記例ではgeojson)読み込んでおく必要があります。
GeoJSONは構造自体は通常のJSONファイルと同じなので、同じようにパース出来ます。

参考

デフォルト設定のLeafletで正常に読み込むためには、ファイルは世界測地系(代表的なのはWGS84やJGD2000 Japan Plane Rectangler)で作成されている必要があります。