SlideShare a Scribd company logo
1 of 80
Download to read offline
LeafletでWebGIS入門
株式会社 三洋コンサルタント
桐本 靖規
2015.07.03
FOSS4G 2015 Hokkaido
1
今日の目次
① Leafletとは
② 準備
③ 構築
Leafletとは
LeafletとはJavascriptで記述されているオープンソースのライブラリで
ファイル自体が軽量でコード量も少なくWebGISを構築可能です。
Web上で独自の地図サイトが作れます!!
DEMO
準 備
ブラウザ
テキストエディタ
ローカル環境
公 開
ブラウザ
テキストエディタ
ローカル環境
公 開
Internet Explorer
Chrome
Firefox
Safari
Opera
Internet Explorer
Chrome
Firefox
Safari
Opera
ブラウザ
テキストエディタ
ローカル環境
公 開
ブラウザ
テキストエディタ
ローカル環境
公 開
ブラウザ
テキストエディタ
ローカル環境
公 開
Webサーバー
構 築
基本構成
背景地図
コントロール
マーカー
GeoJSON
基本構成
背景地図
コントロール
マーカー
GeoJSON
index.html
stylesheet.css
script.js
HTML
CSS
JS
index.html
stylesheet.css
script.js
HTML
CSS
JS
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Leaflet Sample</title>
<script src="./Library/leaflet-0.7.3/leaflet.js"></script>
<link href="./Library/leaflet-0.7.3/leaflet.css"
rel="stylesheet" />
<link href="./css/stylesheet.css" rel="stylesheet" />
</head>
<body>
<div id="map"></div>
<script src="./js/script.js"></script>
</body>
</html>
HTML
ライブラリの参照設定
CDN
(コンテンツデリバリネットワーク)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Leaflet Sample</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/
leaflet/0.7.3/leaflet.js"></script>
<link rel="stylesheet“ href="http://cdnjs.cloudflare.com/
ajax/libs/leaflet/0.7.3/leaflet.css" />
<link href="./css/stylesheet.css" rel="stylesheet" />
</head>
<body>
<div id="map"></div>
<script src="./js/script.js"></script>
</body>
</html>
HTML
ライブラリの参照設定
html, body {
height: 100%;
padding: 0;
margin: 0;
}
#map {
z-index: 0;
height: 100%;
}
CSS
基本構成
背景地図
コントロール
マーカー
GeoJSON
地理院地図
var map = L.map('map');
L.tileLayer('http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{
y}.png', {
attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/
kikakuchousei40182.html' target='_blank'>国土地理院</a>“
}).addTo(map);
map.setView([43.0704123, 141.3406076], 17);
JS
OpenStreetMap
var map = L.map('map');
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution:'&copy; <a href="http://osm.org/copyright">
OpenStreetMap</a> contributors'}).addTo(map);
map.setView([43.0704123, 141.3406076], 17);
JS
Google Maps
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Leaflet Sample</title>
<script src="./Library/leaflet-0.7.3/leaflet.js"></script>
<link href="./Library/leaflet-0.7.3/leaflet.css" rel="stylesheet" />
<script src="http://maps.google.com/maps/api/js?sensor=
false&amp;region=JP"></script>
<script src="./plugin/leaflet-plugins-master/layer/tile/
Google.js"></script>
<link href="./css/stylesheet.css" rel="stylesheet" />
</head>
<body>
<div id="map"></div>
<script src="./js/script.js"></script>
</body>
</html>
HTML
var map = L.map('map');
var Googlemap = new L.Google('ROADMAP');
map.addLayer(Googlemap);
map.setView([43.0704123, 141.3406076], 17);
JS
Bing Maps
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Leaflet Sample</title>
<script src="./Library/leaflet-0.7.3/leaflet.js"></script>
<link href="./Library/leaflet-0.7.3/leaflet.css" rel="stylesheet" />
<script src="./plugin/leaflet-plugins-master/layer/tile/
Bing.js"></script>
<link href="./css/stylesheet.css" rel="stylesheet" />
</head>
<body>
<div id="map"></div>
<script src="./js/script.js"></script>
</body>
</html>
HTML
var map = L.map('map');
var BingMap = new L.BingLayer(“アクセスキーを入力", {
type: 'Road' });
map.addLayer(BingMap);
map.setView([43.0704123, 141.3406076], 17);
JS
背景地図を複数表示
・地理院地図
・OpenStreetMap
・Google Maps
・Bing Maps
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Leaflet Sample</title>
<script src="./Library/leaflet-0.7.3/leaflet.js"></script>
<link href="./Library/leaflet-0.7.3/leaflet.css" rel="stylesheet" />
<script src="http://maps.google.com/maps/api/js?sensor=
false&amp;region=JP"></script>
<script src="./plugin/leaflet-plugins-master/layer/tile/
Google.js"></script>
<script src="./plugin/leaflet-plugins-master/layer/tile/
Bing.js"></script>
<link href="./css/stylesheet.css" rel="stylesheet" />
</head>
<body>
<div id="map"></div>
<script src="./js/script.js"></script>
</body>
</html>
HTML
var t_std = new L.tileLayer('http://cyberjapandata.gsi.go.jp/
xyz/std/{z}/{x}/{y}.png', {
attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/
kikakuchousei40182.html' target='_blank'>国土地理院</a>" });
var t_pale = new L.tileLayer('http://cyberjapandata.gsi.go.jp/
xyz/pale/{z}/{x}/{y}.png', {
attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/
kikakuchousei40182.html‘ target=’_blank‘>国土地理院</a>" });
var t_ort = new L.tileLayer('http://cyberjapandata.gsi.go.jp/
xyz/ort/{z}/{x}/{y}.jpg', {
attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/
kikakuchousei40182.html‘ target=’_blank‘>国土地理院</a>" });
var o_std = new L.tileLayer('http://{s}.tile.openstreetmap.org/
{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">
OpenStreetMap</a> contributors' });
JS
背景地図の読み込み
var g_roadmap = new L.Google('ROADMAP');
var g_satellite = new L.Google('SATELLITE');
var g_hybrid = new L.Google('HYBRID');
var b_roadmap = new L.BingLayer("アクセスキーを入力", {
type: 'Road' });
var b_Aerial = new L.BingLayer("アクセスキーを入力", {
type: 'Aerial' });
var map = L.map('map', {
center: [43.0704123, 141.3406076],
zoom: 17,
layers: [t_pale]
});
JS
画面の中心座標 ( 緯度・経度 )
背景地図の読み込み
var Map_BaseLayer = {
"BingMap 標準": b_roadmap,
"BingMap オルソ": b_Aerial,
"地理院地図 標準": t_std,
"地理院地図 淡色": t_pale,
"地理院地図 オルソ": t_ort,
"OpenStreetMap 標準": o_std,
"GoogleMap 標準": g_roadmap,
"GoogleMap オルソ": g_satellite,
"GoogleMap ハイブリッド": g_hybrid
};
L.control.layers(Map_BaseLayer, null, null).addTo(map);
JS
背景レイヤの作成
レイヤーコントロール表示
DEMO
基本構成
背景地図
コントロール
マーカー
GeoJSON
レイヤ選択 表示
var Map_BaseLayer = {
"BingMap 標準": b_roadmap,
"BingMap オルソ": b_Aerial,
"地理院地図 標準": t_std,
"地理院地図 淡色": t_pale,
"地理院地図 オルソ": t_ort,
"OpenStreetMap 標準": o_std,
"GoogleMap 標準": g_roadmap,
"GoogleMap オルソ": g_satellite,
"GoogleMap ハイブリッド": g_hybrid
};
L.control.layers(Map_BaseLayer, null, {
collapsed: false }).addTo(map);
JS
スケール
var Map_BaseLayer = {
"BingMap 標準": b_roadmap,
"BingMap オルソ": b_Aerial,
"地理院地図 標準": t_std,
"地理院地図 淡色": t_pale,
"地理院地図 オルソ": t_ort,
"OpenStreetMap 標準": o_std,
"GoogleMap 標準": g_roadmap,
"GoogleMap オルソ": g_satellite,
"GoogleMap ハイブリッド": g_hybrid
};
L.control.scale({ imperial: false, maxWidth:300 }).addTo(map);
L.control.layers(Map_BaseLayer, null, {
collapsed: false }).addTo(map);
JS
ズームバー
var map = L.map('map', {
center: [43.0704123, 141.3406076],
zoom: 17,
zoomControl: false,
layers: [t_pale]
});
var Map_BaseLayer = {
"BingMap 標準": b_roadmap,
"BingMap オルソ": b_Aerial,
"地理院地図 標準": t_std,
"地理院地図 淡色": t_pale,
"地理院地図 オルソ": t_ort,
"OpenStreetMap 標準": o_std,
"GoogleMap 標準": g_roadmap,
"GoogleMap オルソ": g_satellite,
"GoogleMap ハイブリッド": g_hybrid
};
JS
DEMO
基本構成
背景地図
コントロール
マーカー
GeoJSON
マーカー 表示
var Map_Marker = L.marker([43.0704123, 141.3406076])
.addTo(map);
var comment = '北海道大学 農学部本館';
Map_Marker.bindPopup(comment).openPopup();
var Map_BaseLayer = {
"BingMap 標準": b_roadmap,
"BingMap オルソ": b_Aerial,
"地理院地図 標準": t_std,
"地理院地図 淡色": t_pale,
"地理院地図 オルソ": t_ort,
"OpenStreetMap 標準": o_std,
"GoogleMap 標準": g_roadmap,
"GoogleMap オルソ": g_satellite,
"GoogleMap ハイブリッド": g_hybrid
};
JSマーカーの表示
ポップアップの表示
DEMO
マーカーアイコン 変更
var map = L.map('map', {
center: [43.0704123, 141.3406076],
zoom: 17,
zoomControl: false,
layers: [t_pale]
});
var sampleIcon = L.icon({
iconUrl: './img/sample.png',
iconSize: [50, 50],
iconAnchor: [10, 40],
popupAnchor: [5, -50]
});
var Map_Marker = L.marker([43.0704123, 141.3406076], {
icon: sampleIcon }).addTo(map);
var comment = '北海道大学 農学部本館';
Map_Marker.bindPopup(comment).openPopup();
JS
アイコンの設定
DEMO
レイヤ 表示
var Map_BaseLayer = {
"BingMap 標準": b_roadmap,
"BingMap オルソ": b_Aerial,
"地理院地図 標準": t_std,
"地理院地図 淡色": t_pale,
"地理院地図 オルソ": t_ort,
"OpenStreetMap 標準": o_std,
"GoogleMap 標準": g_roadmap,
"GoogleMap オルソ": g_satellite,
"GoogleMap ハイブリッド": g_hybrid
};
var Map_OverLayer = {
"会場": Map_Marker
};
L.control.scale({ imperial: false, maxWidth: 300 }).addTo(map);
L.control.layers(Map_BaseLayer, Map_OverLayer, {
collapsed: false }).addTo(map);
JS
オーバーレイヤ選択画面の表示
DEMO
基本構成
背景地図
コントロール
マーカー
GeoJSON
データの準備
geojson.io
GeoJSON : 都市公園データ (点) を使用
国土数値情報(都市公園データ)を使用
QGIS
GeoJSON 表示
var pointdata = {
"type": "FeatureCollection",
"crs": { "type": "name", "properties": { "name":
"urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { "P13_003":
"北6条エルムの里公園" }, "geometry": { "type": "Point",
"coordinates": [ 141.34308642, 43.0666937 ] } },
{ "type": "Feature", "properties": { "P13_003":
"宮部記念緑地" }, "geometry": { "type": "Point",
"coordinates": [ 141.33550164, 43.0666937 ] } },
{ "type": "Feature", "properties": { "P13_003":
"偕楽園緑地" }, "geometry": { "type": "Point",
"coordinates": [ 141.34429626, 43.06828667 ] } },
{ "type": "Feature", "properties": { "P13_003":
"八軒コスモス公園" }, "geometry": { "type": "Point",
"coordinates": [ 141.32328053000001, 43.08470141 ] } }
]
};
GeoJSON
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Leaflet Sample</title>
<script src="./Library/leaflet-0.7.3/leaflet.js"></script>
<link href="./Library/leaflet-0.7.3/leaflet.css" rel="stylesheet" />
<script src="http://maps.google.com/maps/api/js?sensor=false&amp;region=JP"></script>
<script src="./plugin/leaflet-plugins-master/layer/tile/Google.js"></script>
<script src="./plugin/leaflet-plugins-master/layer/tile/Bing.js"></script>
<script src="./files/sample.geojson"></script>
<link href="./css/stylesheet.css" rel="stylesheet" />
</head>
<body>
<div id="map"></div>
<script src="./js/script.js"></script>
</body>
</html>
HTML
var ParkIcon = L.icon({
iconUrl: './img/Park.png',
iconSize: [50, 50],
iconAnchor: [25, 20],
popupAnchor: [0, -30]
});
var Map_GeoJSON = L.geoJson(pointdata, {
pointToLayer: function (feature, layer) {
return L.marker(layer, { icon: ParkIcon });
},
onEachFeature: function (feature, layer) {
layer.bindPopup(feature.properties.P13_003);
}
}).addTo(map);
var Map_OverLayer = {
"会場": Map_Marker,
"GeoJSON": Map_GeoJSON
};
JS
GeoJSONの表示
アイコンと属性値の反映
DEMO
まとめ
・準備
・背景地図
・コントロール
・マーカー
・GeoJSON

More Related Content

What's hot

Karpenterで君だけの最強のオートスケーリングを実装しよう
Karpenterで君だけの最強のオートスケーリングを実装しようKarpenterで君だけの最強のオートスケーリングを実装しよう
Karpenterで君だけの最強のオートスケーリングを実装しようKohei Nagase
 
QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析Mayumit
 
番組宣伝に関するAbemaTV分析事例の紹介
番組宣伝に関するAbemaTV分析事例の紹介番組宣伝に関するAbemaTV分析事例の紹介
番組宣伝に関するAbemaTV分析事例の紹介cyberagent
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築Masashi Shinbara
 
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
AI x WebAR: MediaPipeのハンドトラッキングを使ってみようAI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
AI x WebAR: MediaPipeのハンドトラッキングを使ってみようTakashi Yoshinaga
 
GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)OSgeo Japan
 
Zabbixで楽して監視を開始 @OSC 2019 Tokyo/Spring
Zabbixで楽して監視を開始 @OSC 2019 Tokyo/SpringZabbixで楽して監視を開始 @OSC 2019 Tokyo/Spring
Zabbixで楽して監視を開始 @OSC 2019 Tokyo/SpringAtsushi Tanaka
 
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~Chica Matsueda
 
WebSocketプロトコル
WebSocketプロトコルWebSocketプロトコル
WebSocketプロトコルDaniel Perez
 
地理空間とOSGeoとPostGISとを簡単に紹介してみます
地理空間とOSGeoとPostGISとを簡単に紹介してみます地理空間とOSGeoとPostGISとを簡単に紹介してみます
地理空間とOSGeoとPostGISとを簡単に紹介してみますboiledorange73
 
Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する虎の穴 開発室
 
情シスの味方、Azure のカスタムロール
情シスの味方、Azure のカスタムロール情シスの味方、Azure のカスタムロール
情シスの味方、Azure のカスタムロールTetsuya Odashima
 
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)onozaty
 
Web App for Containers のデプロイでつまずいた話
Web App for Containers のデプロイでつまずいた話Web App for Containers のデプロイでつまずいた話
Web App for Containers のデプロイでつまずいた話Shigenari Ohnuma
 
Map server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoMap server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoHideo Harada
 
はじめてのこんぴゅうとしぇえだあ〜ComputeShaderに入門してみた話〜
はじめてのこんぴゅうとしぇえだあ〜ComputeShaderに入門してみた話〜はじめてのこんぴゅうとしぇえだあ〜ComputeShaderに入門してみた話〜
はじめてのこんぴゅうとしぇえだあ〜ComputeShaderに入門してみた話〜めーぷる しろっぷ
 
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月VirtualTech Japan Inc.
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 

What's hot (20)

Karpenterで君だけの最強のオートスケーリングを実装しよう
Karpenterで君だけの最強のオートスケーリングを実装しようKarpenterで君だけの最強のオートスケーリングを実装しよう
Karpenterで君だけの最強のオートスケーリングを実装しよう
 
QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析
 
番組宣伝に関するAbemaTV分析事例の紹介
番組宣伝に関するAbemaTV分析事例の紹介番組宣伝に関するAbemaTV分析事例の紹介
番組宣伝に関するAbemaTV分析事例の紹介
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
 
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
AI x WebAR: MediaPipeのハンドトラッキングを使ってみようAI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
 
GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)
 
Zabbixで楽して監視を開始 @OSC 2019 Tokyo/Spring
Zabbixで楽して監視を開始 @OSC 2019 Tokyo/SpringZabbixで楽して監視を開始 @OSC 2019 Tokyo/Spring
Zabbixで楽して監視を開始 @OSC 2019 Tokyo/Spring
 
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
 
WebSocketプロトコル
WebSocketプロトコルWebSocketプロトコル
WebSocketプロトコル
 
地理空間とOSGeoとPostGISとを簡単に紹介してみます
地理空間とOSGeoとPostGISとを簡単に紹介してみます地理空間とOSGeoとPostGISとを簡単に紹介してみます
地理空間とOSGeoとPostGISとを簡単に紹介してみます
 
Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する
 
情シスの味方、Azure のカスタムロール
情シスの味方、Azure のカスタムロール情シスの味方、Azure のカスタムロール
情シスの味方、Azure のカスタムロール
 
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)
 
Web App for Containers のデプロイでつまずいた話
Web App for Containers のデプロイでつまずいた話Web App for Containers のデプロイでつまずいた話
Web App for Containers のデプロイでつまずいた話
 
Map server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoMap server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 Hokkaido
 
はじめてのこんぴゅうとしぇえだあ〜ComputeShaderに入門してみた話〜
はじめてのこんぴゅうとしぇえだあ〜ComputeShaderに入門してみた話〜はじめてのこんぴゅうとしぇえだあ〜ComputeShaderに入門してみた話〜
はじめてのこんぴゅうとしぇえだあ〜ComputeShaderに入門してみた話〜
 
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
自作GPUへの道
自作GPUへの道自作GPUへの道
自作GPUへの道
 

Similar to LeafletでWebGIS入門

iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得Atsushi Tadokoro
 
MapGuide+Geopaparazziで作るスマートフォンソリューション
MapGuide+Geopaparazziで作るスマートフォンソリューションMapGuide+Geopaparazziで作るスマートフォンソリューション
MapGuide+Geopaparazziで作るスマートフォンソリューションHirofumi Hayashi
 
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスするEWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスするKiyoshi Sawada
 
Angular js はまりどころ
Angular js はまりどころAngular js はまりどころ
Angular js はまりどころAyumi Goto
 
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスするEWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスするKiyoshi Sawada
 
Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.Yuki Higuchi
 
20121109 foss4g handsonaok
20121109 foss4g handsonaok20121109 foss4g handsonaok
20121109 foss4g handsonaok和人 青木
 
日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)eijikushida
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium MobileNaoya Ito
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】Yasuhito Yabe
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
FlutterをRenderObjectまで理解する
FlutterをRenderObjectまで理解するFlutterをRenderObjectまで理解する
FlutterをRenderObjectまで理解するKeisukeKiriyama
 

Similar to LeafletでWebGIS入門 (20)

iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
 
電子国土Part2
電子国土Part2電子国土Part2
電子国土Part2
 
MapGuide+Geopaparazziで作るスマートフォンソリューション
MapGuide+Geopaparazziで作るスマートフォンソリューションMapGuide+Geopaparazziで作るスマートフォンソリューション
MapGuide+Geopaparazziで作るスマートフォンソリューション
 
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスするEWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
 
Angular js はまりどころ
Angular js はまりどころAngular js はまりどころ
Angular js はまりどころ
 
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスするEWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.
 
Geolocation
GeolocationGeolocation
Geolocation
 
Gdg geo2
Gdg geo2Gdg geo2
Gdg geo2
 
20121109 foss4g handsonaok
20121109 foss4g handsonaok20121109 foss4g handsonaok
20121109 foss4g handsonaok
 
日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium Mobile
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
Leaflet.js超入門
Leaflet.js超入門Leaflet.js超入門
Leaflet.js超入門
 
JavaFX 2.0 への誘い
JavaFX 2.0 への誘いJavaFX 2.0 への誘い
JavaFX 2.0 への誘い
 
Googlemaps tutorial
Googlemaps tutorialGooglemaps tutorial
Googlemaps tutorial
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
FlutterをRenderObjectまで理解する
FlutterをRenderObjectまで理解するFlutterをRenderObjectまで理解する
FlutterをRenderObjectまで理解する
 
Canvas勉強会
Canvas勉強会Canvas勉強会
Canvas勉強会
 

More from Yasunori Kirimoto

ZappaでDBもパッケージしたサーバーレスAPIを構築してみた
ZappaでDBもパッケージしたサーバーレスAPIを構築してみたZappaでDBもパッケージしたサーバーレスAPIを構築してみた
ZappaでDBもパッケージしたサーバーレスAPIを構築してみたYasunori Kirimoto
 
QGIS3.2で地理院タイルをつかってみた
QGIS3.2で地理院タイルをつかってみたQGIS3.2で地理院タイルをつかってみた
QGIS3.2で地理院タイルをつかってみたYasunori Kirimoto
 
Leaflet初級編 - Web地図サイトを構築してみよう-
Leaflet初級編 - Web地図サイトを構築してみよう- Leaflet初級編 - Web地図サイトを構築してみよう-
Leaflet初級編 - Web地図サイトを構築してみよう- Yasunori Kirimoto
 
Node.jsでスクレイピングして可視化してみた
Node.jsでスクレイピングして可視化してみたNode.jsでスクレイピングして可視化してみた
Node.jsでスクレイピングして可視化してみたYasunori Kirimoto
 
はじめてみよう地図を使ったデータビジュアライゼーション入門 ~ FOSS4Gとオープンデータで可視化した地図を公開 ~
はじめてみよう地図を使ったデータビジュアライゼーション入門 ~ FOSS4Gとオープンデータで可視化した地図を公開 ~はじめてみよう地図を使ったデータビジュアライゼーション入門 ~ FOSS4Gとオープンデータで可視化した地図を公開 ~
はじめてみよう地図を使ったデータビジュアライゼーション入門 ~ FOSS4Gとオープンデータで可視化した地図を公開 ~Yasunori Kirimoto
 
みんなの公園マップ札幌版
みんなの公園マップ札幌版みんなの公園マップ札幌版
みんなの公園マップ札幌版Yasunori Kirimoto
 

More from Yasunori Kirimoto (6)

ZappaでDBもパッケージしたサーバーレスAPIを構築してみた
ZappaでDBもパッケージしたサーバーレスAPIを構築してみたZappaでDBもパッケージしたサーバーレスAPIを構築してみた
ZappaでDBもパッケージしたサーバーレスAPIを構築してみた
 
QGIS3.2で地理院タイルをつかってみた
QGIS3.2で地理院タイルをつかってみたQGIS3.2で地理院タイルをつかってみた
QGIS3.2で地理院タイルをつかってみた
 
Leaflet初級編 - Web地図サイトを構築してみよう-
Leaflet初級編 - Web地図サイトを構築してみよう- Leaflet初級編 - Web地図サイトを構築してみよう-
Leaflet初級編 - Web地図サイトを構築してみよう-
 
Node.jsでスクレイピングして可視化してみた
Node.jsでスクレイピングして可視化してみたNode.jsでスクレイピングして可視化してみた
Node.jsでスクレイピングして可視化してみた
 
はじめてみよう地図を使ったデータビジュアライゼーション入門 ~ FOSS4Gとオープンデータで可視化した地図を公開 ~
はじめてみよう地図を使ったデータビジュアライゼーション入門 ~ FOSS4Gとオープンデータで可視化した地図を公開 ~はじめてみよう地図を使ったデータビジュアライゼーション入門 ~ FOSS4Gとオープンデータで可視化した地図を公開 ~
はじめてみよう地図を使ったデータビジュアライゼーション入門 ~ FOSS4Gとオープンデータで可視化した地図を公開 ~
 
みんなの公園マップ札幌版
みんなの公園マップ札幌版みんなの公園マップ札幌版
みんなの公園マップ札幌版
 

LeafletでWebGIS入門

  • 13.
  • 14.
  • 15.
  • 17.
  • 25. <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Leaflet Sample</title> <script src="./Library/leaflet-0.7.3/leaflet.js"></script> <link href="./Library/leaflet-0.7.3/leaflet.css" rel="stylesheet" /> <link href="./css/stylesheet.css" rel="stylesheet" /> </head> <body> <div id="map"></div> <script src="./js/script.js"></script> </body> </html> HTML ライブラリの参照設定
  • 27. <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Leaflet Sample</title> <script src="http://cdnjs.cloudflare.com/ajax/libs/ leaflet/0.7.3/leaflet.js"></script> <link rel="stylesheet“ href="http://cdnjs.cloudflare.com/ ajax/libs/leaflet/0.7.3/leaflet.css" /> <link href="./css/stylesheet.css" rel="stylesheet" /> </head> <body> <div id="map"></div> <script src="./js/script.js"></script> </body> </html> HTML ライブラリの参照設定
  • 28. html, body { height: 100%; padding: 0; margin: 0; } #map { z-index: 0; height: 100%; } CSS
  • 31. var map = L.map('map'); L.tileLayer('http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{ y}.png', { attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/ kikakuchousei40182.html' target='_blank'>国土地理院</a>“ }).addTo(map); map.setView([43.0704123, 141.3406076], 17); JS
  • 32.
  • 34. var map = L.map('map'); L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { attribution:'&copy; <a href="http://osm.org/copyright"> OpenStreetMap</a> contributors'}).addTo(map); map.setView([43.0704123, 141.3406076], 17); JS
  • 36.
  • 37. <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Leaflet Sample</title> <script src="./Library/leaflet-0.7.3/leaflet.js"></script> <link href="./Library/leaflet-0.7.3/leaflet.css" rel="stylesheet" /> <script src="http://maps.google.com/maps/api/js?sensor= false&amp;region=JP"></script> <script src="./plugin/leaflet-plugins-master/layer/tile/ Google.js"></script> <link href="./css/stylesheet.css" rel="stylesheet" /> </head> <body> <div id="map"></div> <script src="./js/script.js"></script> </body> </html> HTML
  • 38. var map = L.map('map'); var Googlemap = new L.Google('ROADMAP'); map.addLayer(Googlemap); map.setView([43.0704123, 141.3406076], 17); JS
  • 40. <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Leaflet Sample</title> <script src="./Library/leaflet-0.7.3/leaflet.js"></script> <link href="./Library/leaflet-0.7.3/leaflet.css" rel="stylesheet" /> <script src="./plugin/leaflet-plugins-master/layer/tile/ Bing.js"></script> <link href="./css/stylesheet.css" rel="stylesheet" /> </head> <body> <div id="map"></div> <script src="./js/script.js"></script> </body> </html> HTML
  • 41.
  • 42.
  • 43. var map = L.map('map'); var BingMap = new L.BingLayer(“アクセスキーを入力", { type: 'Road' }); map.addLayer(BingMap); map.setView([43.0704123, 141.3406076], 17); JS
  • 46. <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Leaflet Sample</title> <script src="./Library/leaflet-0.7.3/leaflet.js"></script> <link href="./Library/leaflet-0.7.3/leaflet.css" rel="stylesheet" /> <script src="http://maps.google.com/maps/api/js?sensor= false&amp;region=JP"></script> <script src="./plugin/leaflet-plugins-master/layer/tile/ Google.js"></script> <script src="./plugin/leaflet-plugins-master/layer/tile/ Bing.js"></script> <link href="./css/stylesheet.css" rel="stylesheet" /> </head> <body> <div id="map"></div> <script src="./js/script.js"></script> </body> </html> HTML
  • 47. var t_std = new L.tileLayer('http://cyberjapandata.gsi.go.jp/ xyz/std/{z}/{x}/{y}.png', { attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/ kikakuchousei40182.html' target='_blank'>国土地理院</a>" }); var t_pale = new L.tileLayer('http://cyberjapandata.gsi.go.jp/ xyz/pale/{z}/{x}/{y}.png', { attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/ kikakuchousei40182.html‘ target=’_blank‘>国土地理院</a>" }); var t_ort = new L.tileLayer('http://cyberjapandata.gsi.go.jp/ xyz/ort/{z}/{x}/{y}.jpg', { attribution: "<a href='http://www.gsi.go.jp/kikakuchousei/ kikakuchousei40182.html‘ target=’_blank‘>国土地理院</a>" }); var o_std = new L.tileLayer('http://{s}.tile.openstreetmap.org/ {z}/{x}/{y}.png', { attribution: '&copy; <a href="http://osm.org/copyright"> OpenStreetMap</a> contributors' }); JS 背景地図の読み込み
  • 48. var g_roadmap = new L.Google('ROADMAP'); var g_satellite = new L.Google('SATELLITE'); var g_hybrid = new L.Google('HYBRID'); var b_roadmap = new L.BingLayer("アクセスキーを入力", { type: 'Road' }); var b_Aerial = new L.BingLayer("アクセスキーを入力", { type: 'Aerial' }); var map = L.map('map', { center: [43.0704123, 141.3406076], zoom: 17, layers: [t_pale] }); JS 画面の中心座標 ( 緯度・経度 ) 背景地図の読み込み
  • 49. var Map_BaseLayer = { "BingMap 標準": b_roadmap, "BingMap オルソ": b_Aerial, "地理院地図 標準": t_std, "地理院地図 淡色": t_pale, "地理院地図 オルソ": t_ort, "OpenStreetMap 標準": o_std, "GoogleMap 標準": g_roadmap, "GoogleMap オルソ": g_satellite, "GoogleMap ハイブリッド": g_hybrid }; L.control.layers(Map_BaseLayer, null, null).addTo(map); JS 背景レイヤの作成 レイヤーコントロール表示
  • 50. DEMO
  • 53. var Map_BaseLayer = { "BingMap 標準": b_roadmap, "BingMap オルソ": b_Aerial, "地理院地図 標準": t_std, "地理院地図 淡色": t_pale, "地理院地図 オルソ": t_ort, "OpenStreetMap 標準": o_std, "GoogleMap 標準": g_roadmap, "GoogleMap オルソ": g_satellite, "GoogleMap ハイブリッド": g_hybrid }; L.control.layers(Map_BaseLayer, null, { collapsed: false }).addTo(map); JS
  • 55. var Map_BaseLayer = { "BingMap 標準": b_roadmap, "BingMap オルソ": b_Aerial, "地理院地図 標準": t_std, "地理院地図 淡色": t_pale, "地理院地図 オルソ": t_ort, "OpenStreetMap 標準": o_std, "GoogleMap 標準": g_roadmap, "GoogleMap オルソ": g_satellite, "GoogleMap ハイブリッド": g_hybrid }; L.control.scale({ imperial: false, maxWidth:300 }).addTo(map); L.control.layers(Map_BaseLayer, null, { collapsed: false }).addTo(map); JS
  • 57. var map = L.map('map', { center: [43.0704123, 141.3406076], zoom: 17, zoomControl: false, layers: [t_pale] }); var Map_BaseLayer = { "BingMap 標準": b_roadmap, "BingMap オルソ": b_Aerial, "地理院地図 標準": t_std, "地理院地図 淡色": t_pale, "地理院地図 オルソ": t_ort, "OpenStreetMap 標準": o_std, "GoogleMap 標準": g_roadmap, "GoogleMap オルソ": g_satellite, "GoogleMap ハイブリッド": g_hybrid }; JS
  • 58. DEMO
  • 61. var Map_Marker = L.marker([43.0704123, 141.3406076]) .addTo(map); var comment = '北海道大学 農学部本館'; Map_Marker.bindPopup(comment).openPopup(); var Map_BaseLayer = { "BingMap 標準": b_roadmap, "BingMap オルソ": b_Aerial, "地理院地図 標準": t_std, "地理院地図 淡色": t_pale, "地理院地図 オルソ": t_ort, "OpenStreetMap 標準": o_std, "GoogleMap 標準": g_roadmap, "GoogleMap オルソ": g_satellite, "GoogleMap ハイブリッド": g_hybrid }; JSマーカーの表示 ポップアップの表示
  • 62. DEMO
  • 64. var map = L.map('map', { center: [43.0704123, 141.3406076], zoom: 17, zoomControl: false, layers: [t_pale] }); var sampleIcon = L.icon({ iconUrl: './img/sample.png', iconSize: [50, 50], iconAnchor: [10, 40], popupAnchor: [5, -50] }); var Map_Marker = L.marker([43.0704123, 141.3406076], { icon: sampleIcon }).addTo(map); var comment = '北海道大学 農学部本館'; Map_Marker.bindPopup(comment).openPopup(); JS アイコンの設定
  • 65. DEMO
  • 67. var Map_BaseLayer = { "BingMap 標準": b_roadmap, "BingMap オルソ": b_Aerial, "地理院地図 標準": t_std, "地理院地図 淡色": t_pale, "地理院地図 オルソ": t_ort, "OpenStreetMap 標準": o_std, "GoogleMap 標準": g_roadmap, "GoogleMap オルソ": g_satellite, "GoogleMap ハイブリッド": g_hybrid }; var Map_OverLayer = { "会場": Map_Marker }; L.control.scale({ imperial: false, maxWidth: 300 }).addTo(map); L.control.layers(Map_BaseLayer, Map_OverLayer, { collapsed: false }).addTo(map); JS オーバーレイヤ選択画面の表示
  • 68. DEMO
  • 75. var pointdata = { "type": "FeatureCollection", "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, "features": [ { "type": "Feature", "properties": { "P13_003": "北6条エルムの里公園" }, "geometry": { "type": "Point", "coordinates": [ 141.34308642, 43.0666937 ] } }, { "type": "Feature", "properties": { "P13_003": "宮部記念緑地" }, "geometry": { "type": "Point", "coordinates": [ 141.33550164, 43.0666937 ] } }, { "type": "Feature", "properties": { "P13_003": "偕楽園緑地" }, "geometry": { "type": "Point", "coordinates": [ 141.34429626, 43.06828667 ] } }, { "type": "Feature", "properties": { "P13_003": "八軒コスモス公園" }, "geometry": { "type": "Point", "coordinates": [ 141.32328053000001, 43.08470141 ] } } ] }; GeoJSON
  • 76. <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Leaflet Sample</title> <script src="./Library/leaflet-0.7.3/leaflet.js"></script> <link href="./Library/leaflet-0.7.3/leaflet.css" rel="stylesheet" /> <script src="http://maps.google.com/maps/api/js?sensor=false&amp;region=JP"></script> <script src="./plugin/leaflet-plugins-master/layer/tile/Google.js"></script> <script src="./plugin/leaflet-plugins-master/layer/tile/Bing.js"></script> <script src="./files/sample.geojson"></script> <link href="./css/stylesheet.css" rel="stylesheet" /> </head> <body> <div id="map"></div> <script src="./js/script.js"></script> </body> </html> HTML
  • 77. var ParkIcon = L.icon({ iconUrl: './img/Park.png', iconSize: [50, 50], iconAnchor: [25, 20], popupAnchor: [0, -30] }); var Map_GeoJSON = L.geoJson(pointdata, { pointToLayer: function (feature, layer) { return L.marker(layer, { icon: ParkIcon }); }, onEachFeature: function (feature, layer) { layer.bindPopup(feature.properties.P13_003); } }).addTo(map); var Map_OverLayer = { "会場": Map_Marker, "GeoJSON": Map_GeoJSON }; JS GeoJSONの表示 アイコンと属性値の反映
  • 78. DEMO