リーフレット(leaflet)は軽量、多機能、拡張性、スマホ対応している地図の機能を持った、JavaScriptライブラリです。リーフレットを使って国土地理院のマップや航空画像を使う方法と、複数のタイルマップをコントロールする方法を確認します。
JS地図ライブラリ・リーフレットを使って特定の位置のマップを表示する
2023年01月10日
leaflet国土地理院のマップを使用する
「地理院地図」に地図の一覧と利用方法が記載されています。
①の URL と ② のズームレベルを利用します。
var map = L.map('myMap', {
center: [32.639884, 130.987154],
zoom: 8,
})
L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
attribution: "<a href='https://maps.gsi.go.jp/development/ichiran.html' target='_blank'>国土地理院</a>",
maxZoom: 18
}).addTo(map);
7 : 標準地図のURLを貼り付けます。
8 : 地理院タイルの出典の明示
9 : ズームできる最大値を入力
これで国土地理院のタイルマップを使用することができます。
タイルマップをコントロール
クリックひとつで複数のタイルマップを変更できるようにしていきます。
デモ
地図の右上のアイコンからタイルマップを変更することができます。
See the Pen Untitled by logsuke (@design-list) on CodePen.
const osm = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
});
const gsi = L.tileLayer(`https://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png`, {
attribution: "<a href='https://maps.gsi.go.jp/development/ichiran.html' target='_blank'>国土地理院</a>",
maxZoom: 18
});
const ewi = L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', {
attribution: 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community',
});
var baseMaps = {
"シンプル": osm,
"詳細": gsi,
"航空写真": ewi,
}
var map = L.map('myMap', {
center: [32.639884, 130.987154],
zoom: 8,
layers: [osm]
})
var LayerControl = L.control.layers(baseMaps).addTo(map);
1 ~ 16 : 複数のタイルマップを baseLayers 配列にまとめます。配列のキーには、html を含めることも可能 {"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>": myLayer}
8 ~ 10 : leaflet-providers プラグインからタイルマップを選択しています。
21 : タイルマップの初期値を指定します。
24 : control.layers に baseLayers を渡すと右上のアイコンからコントロールすることができるようになります。