Previous Page Next Page
オープンソースによる地図表示(Leaflet編)3/9
2019/4/26 by T. Fujita
2-2、Pluginを使用したOverlay表示
次にPluginを使用したOverLayを追加してみましょう。
Pluginを使用して地図を表示する場合には、
Leafletのホームページ等で公開されているPluginが必要です。
今回は、NASAの地形データならびにUSGSの地震データを表示させますので次のPluginを使用します。
・Leaflet.GIBS: NASAの地形データ表示用
・Leaflet Ajax: USGSの地震データJSON版表示用
地図の表示例とHTML及びJAVA Scriptのソースファイル内容を示します。
単独で地図とOverlayを表示する場合は、『
Leaflet_Tutrial_202.html 』をクリックして下さい。
基本地図にPluginを使用したOverlay表示例(右上部で地図、Overlayを選択)
NASAの地形データでは、基本地図としてCost Line(白地図)をOverLayとしてWater Maskが選択できるように追加しました。
ソースファイル内容で赤字部分が追記箇所です。
他にどのようなデータが利用できるかは、
NASA GIBSのデモを参照下さい。
さらに地震情報のOverLayを追加(紫色の部分)してみました。
地震データは『
USGS 』
からGeojsonフォーマットで受領しており、
Leaflet 用プラグイン『
Leaflet Ajax 』を追加することで表示させています。
なお、USGSから受領できるデータ・フォーマットには、「
Geojson」以外にも
「
KML」があります。
『Leaflet_Tutrial_202.html』のソースファイル内容
001 <!DOCTYPE html>
002 <html>
003 <head>
004 <title> Leaflet_Tutrial_202.html 2019/4/26 by T. Fujita </title>
005 <meta charset = "utf-8" />
006 <link rel = "stylesheet" href = "https://unpkg.com/leaflet@1.4.0/dist/leaflet.css" />
007 <script src = "https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>
008 <script src = "./Plugins/leaflet-GIBS-master/src/GIBSMetadata.js" ></script>
009 <script src = "./Plugins/leaflet-GIBS-master/src/GIBSLayer.js" ></script>
010 <script src = "./Plugins/leaflet-ajax-master/dist/leaflet.ajax.js" ></script>
011
012 <script>
013 function init() {
014 var Basic_Map = new Array();
015 Basic_Map[ 0 ] = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
016 attribution: '© "<a href="https://www.openstreetmap.org/copyright">OpenStreetMap"</a"> contributors',
017 continuousWorld: false
018 });
019 Basic_Map[ 1 ] = L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
020 attribution: ""<a href='https://maps.gsi.go.jp/development/ichiran.html' target='_blank'">地理院タイル"</a">"
021 });
~
変更なし
~
048 Basic_Map[ 9 ] = L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/Ocean_Basemap/MapServer/tile/{z}/{y}/{x}', {
049 maxZoom: 13,
050 attribution: 'Tiles by "<a href="http://www.esrij.com/""> Esri Japan "</a">'
051 });
052 Basic_Map[ 10 ] = new L.GIBSLayer('Coastlines', {
053 date: new Date('2015/04/01'),
054 transparent: true
055 });
056
057 var baseMap = {
058 "OpenStreetMap": Basic_Map[ 0 ],
059 "国土地理院 標準地図": Basic_Map[ 1 ],
060 "国土地理院 淡色地図": Basic_Map[ 2 ],
061 "国土地理院 写真": Basic_Map[ 3 ],
062 "国土地理院 白地図": Basic_Map[ 4 ],
063 "Stamen Toner-Background": Basic_Map[ 5 ],
064 "Stamen Toner-Lite": Basic_Map[ 6 ],
065 "Stamen Watercolor": Basic_Map[ 7 ],
066 "Esri World Topo Map": Basic_Map[ 8 ],
067 "Esri Ocean Base Map": Basic_Map[ 9 ],
068 "NASA EOSDIS GIBS/Coast Lines": Basic_Map[ 10 ],
069 };
070
071 var Over_Layer = new Array();
072 Over_Layer[ 0 ] = L.tileLayer('http://{s}.tile.stamen.com/{variant}/{z}/{x}/{y}.png', {
073 attribution: 'Map tiles by "<a href="http://stamen.com"">Stamen Design"</a">, ' +
074 '"<a href="http://creativecommons.org/licenses/by/3.0"">CC BY 3.0"</a"> — ' +
075 'Map data {attribution.OpenStreetMap}',
076 variant: 'toner-hybrid'
077 });
~
変更なし
~
090 Over_Layer[ 3 ] = L.tileLayer('http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', {
091 attribution: ""<a href='http://www.openseamap.org' target='_blank'">OpenSeaMap"</a"> contributors"
092 });
093 Over_Layer[ 4 ] = new L.GIBSLayer('MODIS_Water_Mask', {
094 date: new Date('2018/11/15'),
095 transparent: true
096 });
097 Over_Layer[ 5 ] = new L.GeoJSON.AJAX(
098 // "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson",
099 // "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_week.geojson",
100 // "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojson",
101 // "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/1.0_week.geojson",
102 "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson",
103 // "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_month.geojson",
104 // "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_month.geojson",
105 // "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/1.0_month.geojson",
106 // "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.geojson",
107 {pointToLayer: function (feature, latlng) {
108 return L.circleMarker(latlng, {
109 radius: feature.properties.mag * feature.properties.mag / 3,
110 fillcolor: "#FF7800",
111 color: "#FF7800",
112 weight: 1,
113 opacity: 0.5,
114 fillOpacity: 0.5
115 }); },
116 onEachFeature: function (feature, layer) {
117 layer.bindPopup(new Date(feature.properties.time).toUTCString() + " / " + feature.properties.title);
118 }
119 });
120
121 var overLay = {
122 "Stamen toner-lines": Over_Layer[ 1 ],
123 "Stamen toner-labels": Over_Layer[ 2 ],
124 "OpenSeaMap": Over_Layer[ 3 ],
125 "GIBS Water Mask": Over_Layer[ 4 ],
126 "1W All Earthquake(Geojson)": Over_Layer[ 5 ]
127 };
128
129 var map_202 = L.map('map_202').setView([35.65809922, 139.74135747], 8);
130 map_202.addLayer( Basic_Map[ 0 ] );
131 L.control.layers(baseMap, overLay).addTo(map_202);
132 }
133 </script>
134 </head>
135 <body onload="init()">
136 <div id="map_202" style="width: 100%; height: 400px; background-color:#ffffff; border: solid 1px"></div>
137 </body>
138 </html>
また、USGSから受領できる地震データは、1日分/1週間分/1ケ月分と各種ありますのが、ここでは1週間分のデータを表示させています。
他の地震データの使用例は、コメント文として記載していますので参考にしてください。
2-3、その他のOverlay表示
上記の他にも
Open Weather Map等 Overlay可能なデータを配信しているサイトがあります。
Open Weather Mapを使用するためには、当該ホームページでAPI keyを入手する必要がありますので、ここで使用方法の紹介はしませんが、
次のURL等が参考になると思います。
・
GitHub - buche/leaflet-openweathermap
・
あらふぉ ぁ らいふ 2018年12月29日
Previous Page Next Page