【JavaScript】Leafletを使って任意の画像を地図らしく装飾する

著者:杉浦

【JavaScript】Leafletを使って任意の画像を地図らしく装飾する

 Leafletは地図を表現するためのJavaScriptのライブラリです。これはよく次のコードの様にタイルレイヤーとして様々な世界地図を読み込ませることで動かされます。
Leaflet

var mymap = L.map('id-of-map-div').setView([51.505, -0.09], 13);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
    attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
    maxZoom: 18,
    id: 'mapbox.streets',
    accessToken: 'your.mapbox.access.token'
}).addTo(mymap);

 このLeafletですがmapに登録できるものには任意の画像もあります。次の様にmapのサイズと背景画像設定のコードを入れるだけで地図=単体の画像となり自由に加工できます。

// 画像サイズ兼地図サイズ
const height = 354;
const width = 663;
const bounds = [[0,0], [height,width]]; 
// leafletに地図として画像を登録
const map = L.map('map', {crs: L.CRS.Simple});// {crs: L.CRS.Simple}で座標系が決まるため忘れるととてもめんどくさい
L.imageOverlay('https://i2.wp.com/cpoint-lab.co.jp/wp-content/uploads/2019/03/storm_diagram_00.png?ssl=1', bounds).addTo(map); // 画像をboundsの大きさとして地図に追加
map.fitBounds(bounds); // 描画領域をboundsに設定

 この地図は左下を原点、右方向がXの正、上方向がYの正となるXY座標系です。第一象限ですね。これに従って加工すると次のJSFiddleみたいなことができます。

  • この記事いいね! (0)

著者について

杉浦 administrator