<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>地理院地図 on Leaflet</title> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css" /> <script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script> <style> html, body {height:100%; width:100%; padding: 0; margin:0; } #vmap {height:98%; width:98%; margin:auto;} /* 地図表示要素のスタイルを記述 */ </style> </head> <body> <div id="vmap">ここに地図を表示</div> <script> var mymap = L.map('vmap'); // 地図を作成する mymap.setView([35.192362,139.026346],15); //図中心: 箱根関所, ズームレベル:15 L.control.scale({maxWidth:200,position:'bottomright',imperial:false}).addTo(mymap); // スケールを表示 var marker1 = L.marker([35.189311,139.024623]).addTo(mymap); // マーカを作成 marker1.bindPopup("箱根駅伝<br>goal・start"); // クリック時にポップアップを表示 var marker2 = L.marker([35.196262,139.026013]).addTo(mymap); // マーカを作成 marker2.bindPopup("箱根恩賜公園"); // クリック時にポップアップを表示 var route = L.polyline([ [35.189311,139.024623],[35.189052,139.025025],[35.191502,139.027394],[35.192102,139.026511],[35.192273,139.026372],[35.192358,139.026340],[35.193125,139.026308],[35.193779,139.026731],[35.193893,139.026474],[35.194046,139.026544],[35.194112,139.026367],[35.194198,139.026276],[35.194754,139.025702],[35.195276,139.025837],[35.195386,139.025815],[35.195523,139.025654],[35.195637,139.025412],[35.195913,139.025756],[35.196005,139.025627],[35.196073,139.025627],[35.196358,139.025815],[35.196262,139.026013]],{color:"red",weight:3}).addTo(mymap); // polyline データを追加 //地理院地図の標準地図タイル var gsi =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>"}); // 地理院タイルの出典情報のリンク //地理院地図の写真タイル var gsiphoto = L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/{z}/{x}/{y}.jpg', {attribution: "<a href='http://portal.cyberjapan.jp/help/termsofuse.html' target='_blank'>地理院タイル</a>"}); //地理院地図の色別標高図 var relief = L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/relief/{z}/{x}/{y}.png', {attribution: "<a href='http://portal.cyberjapan.jp/help/termsofuse.html' target='_blank'>地理院タイル</a>「海域部は海上保安庁海洋情報部の資料を使用して作成」"}); // オープンストリートマップのタイル var osm = L.tileLayer('http://tile.openstreetmap.jp/{z}/{x}/{y}.png', { attribution: "c<a href='http://osm.org/copyright' target='_blank'>OpenStreetMap</a> contributors" }); var baseMaps = { // base layers オブジェクトとして、baseMaps を設定 "地理院地図" : gsi, "地理院写真" : gsiphoto, "色別標高図" : relief, "O.S.Map" : osm }; var overlays = { // overlays オブジェクトとして、overlays を設定 "歩走路": route, "箱根恩賜公園": marker2 }; // layersコントロールに baseMaps と overlays を設定して地図に追加 L.control.layers(baseMaps,overlays).addTo(mymap); gsi.addTo(mymap); // gsi "地理院地図" をベースレイヤに設定 </script> </body> </html>
( 6,7行) leaflet.js をホスティングするため leaflet にリンクを貼ります
(10行目) 地図表示要素のスタイルを記述します
(14行目) <div id="vmap"> で地図表示領域を設定します
(15行~) 表示する地図の詳細を具体的に記述します
(16行目) id='vmap' に表示する地図を変数 mymap に書込む事にします
(17行目) 表示地図の中心地の緯度,経度とズーム値を指定します
(18行目) スケールを地図右下に設置します
(19行目) mymap に marker1 を設置します
(20行目) marker1 をクリックした時のポップアップ表示を記述します
(21,22行) 同様に marker2 を設置します
(23行目) 地図に追記する polyline データを記述し、変数 route とします
(25,26行) 地理院地図の標準地図タイルを利用可能に設定します
(28,29行) 地理院地図の写真タイルを利用可能に設定します
(31,32行) 地理院地図の色別標高図タイルを利用可能に設定します
(34,35行) OpenStreetMap の地図タイルを利用可能に設定します
(36-41行) ベース地図タイルのセレクタ baseMaps を記述します
(42-45行) オーバーレイのセレクタ overlays を記述します
(47行目) セレクタ baseMaps と overlays を mymap に設置します
(48行目) mymap に地理院地図の標準地図タイル gsi を初期設定します