Monthly Archives: 5月 2015

Leaflet #010 – マーカーのアイコンを変更

Leafletでマーカーのアイコンを変更するためには下記のように記述します。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sample</title>

    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
    <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
    <script src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
    <script src="http://matchingnotes.com/javascripts/leaflet-google.js"></script>
    <link href="stylesheet.css" rel="stylesheet" />

</head>

<body>
        
    <div id="map"></div>

    <script src="script.js"></script>

</body>

</html>

 

stylesheet.css


        html, body {
            width: 100%;
            height: 100%;

        }

        #map {
            width: 100%;
            height: 100%;
        }

        .leaflet-map-pane {
            z-index: 2 !important;
        }

        .leaflet-google-layer {
            z-index: 1 !important;
        }

 

script.js



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'
});

var g_roadmap = new L.Google('ROADMAP');

var g_satellite = new L.Google('SATELLITE');

var g_hybrid = new L.Google('HYBRID');


var Map_b = {
    "地理院地図 標準": t_std,
    "地理院地図 淡色": t_pale,
    "地理院地図 オルソ": t_ort,
    "OpenStreetMap 標準": o_std,
    "GoogleMap 標準": g_roadmap,
    "GoogleMap オルソ": g_satellite,
    "GoogleMap ハイブリッド": g_hybrid,
};

var map = L.map('map', {
    center: [35.710063, 139.8107],
    zoom: 16,
    layers: [t_std]
});

var sampleIcon = L.icon({
    iconUrl: 'sample.png',
    iconRetinaUrl: 'sample.png',
    iconSize: [50, 50],
    iconAnchor: [25, 50],
    popupAnchor: [0, -50],
});

var mapMarker = L.marker([35.710063, 139.8107], { icon: sampleIcon }).addTo(map);
var comment = 'sample <br> スカイツリー';
mapMarker.bindPopup(comment).openPopup();

L.control.scale({ maxWidth: 250, imperial: false }).addTo(map);

L.control.layers(Map_b, null, { collapsed: false }).addTo(map);

 

index.htmlを実行すると下記のようにブラウザで表示されます。
※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

Leaflet_010_01

 

表示させるアイコンを変更したい場合:
var sampleIcon~の部分の記述を変更します。

iconUrl: 画像ファイルパス
iconRetinaUrl: モバイル用画像ファイルパス
iconSize: アイコンのサイズ
iconAnchor: 画像のオフセット位置
popupAnchor: ポップアップの表示位置


var sampleIcon = L.icon({
    iconUrl: 'sample2.png', 
    iconRetinaUrl: 'sample2.png',
    iconSize: [25, 25],
    iconAnchor: [12, 25],
    popupAnchor: [0, -25],
});

 
 

 
 

 
 

Leaflet #009 – 現在位置の表示

Leafletで現在位置の表示するためにはHTML5の「Geolocation API」を利用して下記のように記述します。

Geolocation APIとは、HTML5から活用されるようになった位置情報を扱うためのAPIです。JavaScriptで記述することにより現在の位置情報を取得できます。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sample</title>

    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
    <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
    <script src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
    <script src="http://matchingnotes.com/javascripts/leaflet-google.js"></script>
    <link href="stylesheet.css" rel="stylesheet" />

</head>

<body>
        
    <div id="map"></div>

    <script src="script.js"></script>

</body>

</html>

 

stylesheet.css


        html, body {
            width: 100%;
            height: 100%;

        }

        #map {
            width: 100%;
            height: 100%;
        }

        .leaflet-map-pane {
            z-index: 2 !important;
        }

        .leaflet-google-layer {
            z-index: 1 !important;
        }

 

script.js


    navigator.geolocation.getCurrentPosition(successCallback, errorCallback);

    function successCallback(position) {

        var lat = position.coords.latitude;
        var lng = position.coords.longitude;

        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'
        });

        var g_roadmap = new L.Google('ROADMAP');

        var g_satellite = new L.Google('SATELLITE');

        var g_hybrid = new L.Google('HYBRID');

        var Map_b = {
            "地理院地図 標準": t_std,
            "地理院地図 淡色": t_pale,
            "地理院地図 オルソ": t_ort,
            "OpenStreetMap 標準": o_std,
            "GoogleMap 標準": g_roadmap,
            "GoogleMap オルソ": g_satellite,
            "GoogleMap ハイブリッド": g_hybrid,
        };

        var map = L.map('map', {
            center: [lat, lng],
            zoom: 16,
            layers: [t_std]
        });

        var mapMarker = L.marker([lat, lng], { title: 'いまここ!' }).addTo(map);
        var comment = 'いまここ!';
        mapMarker.bindPopup(comment).openPopup();

        L.control.scale({ maxWidth: 250, imperial: false }).addTo(map);

        L.control.layers(Map_b, null, { collapsed: false }).addTo(map);

    }

    function errorCallback(error) {
        alert("位置情報取得に失敗しました。");
    }

 

index.htmlを実行すると下記のようにブラウザで表示されます。
※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

Leaflet_009_01

 
 

 
 

 
 

Leaflet #008 – 外部ファイルのGeoJSONでマーカー表示

Leaflet #007 – GeoJSONでマーカー表示」ではscript.jsに直接GeoJSONを記述していましたが、データ量が多くなると汎用性が悪くなるので別ファイルにGeoJSONを保存して外部から読み込む方法を記載します。

GeoJSONのデータを用意するための方法は「Leaflet #007 – GeoJSONでマーカー表示」を参照。

外部から読み込む方法を色々と試してみましたが、なかなかうまくいかず最終的に「jQuery」を利用する方法で落ち着きました。

jQueryとは、JavaScriptをより容易に記述できるようにするために設計された軽量なJavaScriptライブラリです。

尚、GeoJSONのオブジェクトはサーバーにアップロードしないと表示されないようです。

 

Leafletで外部ファイルのGeoJSONでマーカー表示するためには下記のように記述します。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sample</title>

    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
    <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
    <script src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
    <script src="http://matchingnotes.com/javascripts/leaflet-google.js"></script>
    <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
    <link href="stylesheet.css" rel="stylesheet" />

</head>

<body>
        
    <div id="map"></div>

    <script src="script.js"></script>

</body>

</html>

 

stylesheet.css


        html, body {
            width: 100%;
            height: 100%;

        }

        #map {
            width: 100%;
            height: 100%;
        }

        .leaflet-map-pane {
            z-index: 2 !important;
        }

        .leaflet-google-layer {
            z-index: 1 !important;
        }

 

sample.geojson


{"type":"FeatureCollection","features":[
{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[139.76712226867676,35.68107370561057]}},
{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[139.70030307769775,35.69045025639499]}},
{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[139.7512435913086,35.707283453190406]}}]}

 

script.js



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'
});

var g_roadmap = new L.Google('ROADMAP');

var g_satellite = new L.Google('SATELLITE');

var g_hybrid = new L.Google('HYBRID');


var Map_b = {
    "地理院地図 標準": t_std,
    "地理院地図 淡色": t_pale,
    "地理院地図 オルソ": t_ort,
    "OpenStreetMap 標準": o_std,
    "GoogleMap 標準": g_roadmap,
    "GoogleMap オルソ": g_satellite,
    "GoogleMap ハイブリッド": g_hybrid,
};

var map = L.map('map', {
    center: [35.6910766, 139.7350616],
    zoom: 14,
    layers: [t_pale]
});

L.control.scale({ maxWidth: 250, imperial: false }).addTo(map);

L.control.layers(Map_b, null, { collapsed: false }).addTo(map);

$.getJSON("sample.geojson", function (data) {
    L.geoJson(data).addTo(map);
});

 

index.htmlを実行すると下記のようにブラウザで表示されます。
※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

Leaflet_008_01

 

表示させるファイルを変更したい場合:
$.getJSON~の部分の記述を変更します。


$.getJSON("sample2.geojson", function (data) {
    L.geoJson(data).addTo(map);
});

 
 

 
 

 
 

Leaflet #007 – GeoJSONでマーカー表示

GeoJSONとは、JavaScript Object Notation(JSON)を基にした地理空間データ交換フォーマットです。様々な地理的データ構造をエンコードするためのフォーマットで複数のGISデータを扱う時に便利です。

GeoJSONのデータを用意するための方法をいくつか紹介します。

①QGISで作成する。
QGISで作成したデータを「名前をつけて保存」でGeoJSON形式で保存します。

Leaflet_007_02

 

②geojson.ioで作成する。
geojson.ioを利用するとWEB上でGeoJSONの作成が行えます。

Leaflet_007_03

 

③既存データを利用・変換する。
国土数値情報などの既存データを変換して利用する。
データ利用の際は利用条件を確認してください。

 

LeafletでGeoJSONでマーカー表示するためには下記のように記述します。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sample</title>

    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
    <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
    <script src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
    <script src="http://matchingnotes.com/javascripts/leaflet-google.js"></script>
    <link href="stylesheet.css" rel="stylesheet" />

</head>

<body>
        
    <div id="map"></div>

    <script src="script.js"></script>

</body>

</html>

 

stylesheet.css


        html, body {
            width: 100%;
            height: 100%;

        }

        #map {
            width: 100%;
            height: 100%;
        }

        .leaflet-map-pane {
            z-index: 2 !important;
        }

        .leaflet-google-layer {
            z-index: 1 !important;
        }

 

script.js



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'
});

var g_roadmap = new L.Google('ROADMAP');

var g_satellite = new L.Google('SATELLITE');

var g_hybrid = new L.Google('HYBRID');


var Map_b = {
    "地理院地図 標準": t_std,
    "地理院地図 淡色": t_pale,
    "地理院地図 オルソ": t_ort,
    "OpenStreetMap 標準": o_std,
    "GoogleMap 標準": g_roadmap,
    "GoogleMap オルソ": g_satellite,
    "GoogleMap ハイブリッド": g_hybrid,
};

var map = L.map('map', {
    center: [35.6910766, 139.7350616],
    zoom: 14,
    layers: [t_pale]
});

L.control.scale({ maxWidth: 250, imperial: false }).addTo(map);

L.control.layers(Map_b, null, { collapsed: false }).addTo(map);

var geojson_data = [{ "type": "FeatureCollection", "features": [{ "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [139.76712226867676, 35.68107370561057] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [139.70030307769775, 35.69045025639499] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [139.7512435913086, 35.707283453190406] } }] }
];

L.geoJson(geojson_data).addTo(map);

 

index.htmlを実行すると下記のようにブラウザで表示されます。
※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

Leaflet_007_01

 

表示させるオブジェクトの内容を変更したい場合:
var geojson_data~の部分の記述を変更します。


var geojson_data = [{ "type": "FeatureCollection", "features": [{ "type": "Feature", "properties": { "id": 5 }, "geometry": { "type": "Point", "coordinates": [ 139.73025667682498, 35.684728657838271 ] } },{ "type": "Feature", "properties": { "id": 4 }, "geometry": { "type": "Point", "coordinates": [ 139.7404818862039, 35.630246376589362 ] } },{ "type": "Feature", "properties": { "id": 3 }, "geometry": { "type": "Point", "coordinates": [ 139.77705667359774, 35.713791961149241 ] } },{ "type": "Feature", "properties": { "id": 2 }, "geometry": { "type": "Point", "coordinates": [ 139.76722474150262, 35.68153424228494 ] } },{ "type": "Feature", "properties": { "id": 1 }, "geometry": { "type": "Point", "coordinates": [ 139.7001709646139,35.690318577295173 ] } }] }];

 
 

 
 

 
 

day #009

Kindleのアプリが使用できるようになってからかなり重宝しています。
紙の本も購入するのですがKindleと使い分けるようにしています。
セール等も頻繁にやっているので、購入したかった本が半額で買えたりもします。
電子書籍おすすめです。

Kindleアプリ

 
 

 
 

Leaflet #006 – マーカーとポップアップの表示

Leafletでマーカーとポップアップを表示するためには下記のように記述します。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sample</title>

    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
    <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
    <script src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
    <script src="http://matchingnotes.com/javascripts/leaflet-google.js"></script>
    <link href="stylesheet.css" rel="stylesheet" />

</head>

<body>
        
    <div id="map"></div>

    <script src="script.js"></script>

</body>

</html>

 

stylesheet.css


        html, body {
            width: 100%;
            height: 100%;

        }

        #map {
            width: 100%;
            height: 100%;
        }

        .leaflet-map-pane {
            z-index: 2 !important;
        }

        .leaflet-google-layer {
            z-index: 1 !important;
        }

 

script.js


    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'
    });

    var g_roadmap = new L.Google('ROADMAP');

    var g_satellite = new L.Google('SATELLITE');

    var g_hybrid = new L.Google('HYBRID');


    var Map_b = {
        "地理院地図 標準": t_std,
        "地理院地図 淡色": t_pale,
        "地理院地図 オルソ": t_ort,
        "OpenStreetMap 標準": o_std,
        "GoogleMap 標準": g_roadmap,
        "GoogleMap オルソ": g_satellite,
        "GoogleMap ハイブリッド": g_hybrid,
    };

    var map = L.map('map', {
        center: [35.710063, 139.8107],
        zoom: 16,
        layers: [t_std]
    });

    var mapMarker = L.marker([35.710063, 139.8107]).addTo(map);
    var comment = 'sample <br> スカイツリー';
    mapMarker.bindPopup(comment).openPopup();

    L.control.scale({ maxWidth: 250 ,imperial: false}).addTo(map);

    L.control.layers(Map_b, null, { collapsed: false }).addTo(map);

 

index.htmlを実行すると下記のようにブラウザで表示されます。
※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

Leaflet_006_01

 

マーカーにタイトルを付けたい場合:
var mapMarker~の部分の記述を変更します。


var mapMarker = L.marker([35.710063, 139.8107], { title: 'sample' }).addTo(map);

 

ポップアップの内容を変更したい場合:
var comment~の部分の記述を変更します。


var comment = 'sample <br> 東京タワー';

 

 
 

 
 

 
 

Leaflet #005 – スケールの表示

Leafletでスケールを表示するためには下記のように記述します。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sample</title>

    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
    <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
    <script src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
    <script src="http://matchingnotes.com/javascripts/leaflet-google.js"></script>
    <link href="stylesheet.css" rel="stylesheet" />

</head>

<body>
        
    <div id="map"></div>

    <script src="script.js"></script>

</body>

</html>

 

stylesheet.css


        html, body {
            width: 100%;
            height: 100%;

        }

        #map {
            width: 100%;
            height: 100%;
        }

 

script.js


    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'
    });

    var g_roadmap = new L.Google('ROADMAP');

    var g_satellite = new L.Google('SATELLITE');

    var g_hybrid = new L.Google('HYBRID');


    var Map_b = {
        "地理院地図 標準": t_std,
        "地理院地図 淡色": t_pale,
        "地理院地図 オルソ": t_ort,
        "OpenStreetMap 標準": o_std,
        "GoogleMap 標準": g_roadmap,
        "GoogleMap オルソ": g_satellite,
        "GoogleMap ハイブリッド": g_hybrid,
    };

    var map = L.map('map', {
        center: [35.710063, 139.8107],
        zoom: 16,
        layers: [t_std]
    });

    L.control.scale().addTo(map);

    L.control.layers(Map_b, null, { collapsed: false }).addTo(map);

 

index.htmlを実行すると下記のようにブラウザで表示されます。
※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

Leaflet_005_01

 

mi/ftを非表示にしたい場合:
L.control.layers~の部分の記述を変更します。


L.control.scale({ imperial: false }).addTo(map);

 

m/kmを非表示にしたい場合:
L.control.layers~の部分の記述を変更します。


L.control.scale({ metric: false }).addTo(map);

 

スケールの幅を変更したい場合:
L.control.layers~の部分の記述を変更します。


 L.control.scale({ maxWidth: 500 }).addTo(map);

 

スケールの位置を変更したい場合:
L.control.layers~の部分の記述を変更します。

スケールを左側に表示します。


L.control.scale({ position: 'topleft' }).addTo(map);

 
 

 

Leaflet #004 – 背景レイヤの表示

Leafletで背景を切り替え表示するためには下記のように記述します。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sample</title>

    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
    <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
    <script src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
    <script src="http://matchingnotes.com/javascripts/leaflet-google.js"></script>
    <link href="stylesheet.css" rel="stylesheet" />

</head>

<body>
        
    <div id="map"></div>

    <script src="script.js"></script>

</body>

</html>

 

stylesheet.css


        html, body {
            width: 100%;
            height: 100%;

        }

        #map {
            width: 100%;
            height: 100%;
        }

 

script.js


    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'
    });

    var g_roadmap = new L.Google('ROADMAP');

    var g_satellite = new L.Google('SATELLITE');

    var g_hybrid = new L.Google('HYBRID');


    var Map_b = {
        "地理院地図 標準": t_std,
        "地理院地図 淡色": t_pale,
        "地理院地図 オルソ": t_ort,
        "OpenStreetMap 標準": o_std,
        "GoogleMap 標準": g_roadmap,
        "GoogleMap オルソ": g_satellite,
        "GoogleMap ハイブリッド": g_hybrid,
    };

    var map = L.map('map', {
        center: [35.710063, 139.8107],
        zoom: 16,
        layers: [t_std]
    });

    L.control.layers(Map_b, null, null).addTo(map);

 

index.htmlを実行すると下記のようにブラウザで表示されます。
※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

Leaflet_004_01
 

レイヤ切り替えをデフォルトで表示したい場合:
L.control.layers~の部分の記述を変更します。


 L.control.layers(Map_b, null, { collapsed: false }).addTo(map);

 

レイヤ切り替えの位置を変更したい場合:
L.control.layers~の部分の記述を変更します。

レイヤ切り替えを左側に表示します。


 L.control.layers(Map_b, null, { position: 'topleft' }).addTo(map);

 
 

 
 

 
 

Leaflet #003 – 背景地図(OpenStreetMap)の表示

Leafletで背景にOpenStreetMapを表示するためには下記のように記述します。

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sample</title>

    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
    <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
    <link href="stylesheet.css" rel="stylesheet" />

</head>

<body>
    
    <div id="map"></div>

    <script src="script.js"></script>

</body>

</html>

 

stylesheet.css


        html, body {
            width: 100%;
            height: 100%;

        }

        #map {
            width: 100%;
            height: 100%;
        }

 

script.js


var map = L.map('map');

L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',
    maxZoom: 18
}).addTo(map);

map.setView([35.681382, 139.766084], 15);

 

index.htmlを実行すると下記のようにブラウザで表示されます。

Leaflet_003_01

 

初期表示位置・縮尺を変えたい時:
map.setView~の部分の記述を変更します。

日本全体表示


map.setView([35.999887, 138.75], 5);